iOS 获取字符串数学公式、字符串条件运算和逻辑运算的计算结果

Vivado 18.3安装全攻略:从下载到配置的完整指南 本文详细介绍了Vivado 18.3的安装全流程,从下载准备到配置优化,特别适合FPGA开发者。文章包含硬件要求、版本选择、组件配置等实用技巧,帮助用户避免常见安装问题,确保稳定运行。重点解析了License配置和系统优化设置,提升开发效率。 阅读详情

前言

开发中遇到了多个输入框计算联动,通过服务器返回的公式自动算结果并显示在相对应的输入框中。

例如以下公式
@"{width}*{height}*0.5+1"

或者更复杂的公式,代码中{width} 代码替换值,在代码逻辑中替换后得到如下字符串

@"20*30*0.5+1"

有可能实际业务中公式比这个更复杂。
正好有个同事说JavaScript 有一个函数eval 可以解决以上问题直接拿结果。
灵感这就来了。哈哈JavaScriptCore…
不多说直接上代码

+ (CGFloat)evalCaculateStringFormulaJavaScript:(NSString *)string{
    //去空格
    string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
    if (string.length == 0) {
        return 0;
    }
    JSContext *context = [[JSContext alloc] init];
    JSValue *jsFunction = [context evaluateScript:[NSString stringWithFormat:@"(function(){  return eval(%@) })",string]];
    return [[[jsFunction callWithArguments:nil] toNumber] floatValue];
}

返回值如果是浮点数有可能会有精度问题,可以适当的处理一下,这里就不多说了。

字符串条件运算和逻辑运算

方式基本上和上面一样,不过字符串对比要符合JavaScript写法记得加单引号。
比如

//字符串对比结果
@"'ac'=='ac'"
@"'ac'=='dc'"

数字对比就不用。
代码如下

+ (BOOL)evalJavaScript:(NSString *)string{
    BOOL result = false;
    //去空格
    string = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
    if (string.length == 0) {
        return result;
    }
    
    JSContext *context = [[JSContext alloc] init];
    JSValue *jsFunction = [context evaluateScript:[NSString stringWithFormat:@"(function(){  return eval(%@) })",string]];
    return [[jsFunction callWithArguments:nil] toBool];
}
Jenkins部署前后端分离项目最全图文教程(手把手教学) 最近Jenkins部署的热度比较高,于是就想出一篇关于我是如何使用Jenkins部署前后端分离项目的,本篇记录了我是如何一步一步去配置、搭建和部署的完整流程,每一行代码都进行了实测和讲解,通过图文的教学写成博客分享给大家! 阅读详情

相关推荐

RT-Thread学习笔记(5):SPI驱动框架分析

1、两个设备模型 在spi驱框架中,一般会自己初始化一个总线设备(rt_spi_bus),当我们通过挂载后,会相应注册一个从设备(rt_spi_device)。 1、总线设备模型 struct rt_spi_bus { struct rt_device parent; rt_uint8_t mode; const struct rt_spi_ops *ops; struct rt_mutex lock; struct rt_spi_device *owner; };

BLBQ962464的博客 1万+

iOS 关于数学字符串公式的计算

戳一下~ 关于数学字符串公式的计算

豪冷的博客 1351

ETL基础概念及要求详解

ETL即Extract(抽取)Transform(转换)Load(装载)的过程,如下图,同时也包括数据清洗的部分,是数据从源端到目标端的一个数据处理的过程,是构建数据仓库的重要一环,但不局限于构建数据仓库其他BI(商业智能)的设计和开发数据分析平台也经常用到ETL。

qq_43605229的博客 8945

逻辑运算符-----IOS开发学习记录第8天之C语言学习

一、逻辑运算符的介绍   1、逻辑运算符:&&(与) ||(或) !(非)   口诀:&& 同真为真,一假则假 ||  一真则真,一假则假      ! 假为真,真为假   2、我们通过下面例子来看具体细节: #include <stdio.h> int main(int argc...

weixin_30438813的博客 149

硬件基础(4):(7)ADC电压采集:软件校准(标定、拟合)

在实际项目中,**软件端校准**可以有效弥补硬件方面(分压电阻误差、放大器失调、参考源误差等)带来的系统性偏差,从而提高 ADC 测量精度。下面是一个常见的**多点实测校准**流程与思路,个人感觉传感器标定的原理也只这样。

FCZlll的博客 6246

我的AI学习 ai维护工具之langfuse

as_type: Optional[Literal[‘generation’]] = None, # 将记录定义为 Observation (LLM 调用)transform_to_string: Optional[Callable[[Iterable], str]] = None # 将输出转为 string。要用LangFuse的云服务,首先要在LangFuse官网上注册,注册完后将页面拉倒最后,点免费的SignUp,API文档:https://api.reference.langfuse.com/

liubaobin的博客 4095

黑马程序员——iOS核心基础(3-4天)

C语言基础3-4天。其中包括运算符和判断语句。

Anchor graph 对齐文献解读

Align then Fusion: Generalized Large-scale Multi-view Clustering with Anchor Matching Correspondences文献解读

atease0001的博客 1165

使用Objective-C进行iOS移动开发

【课程特点】1、196节大容量课程:包含了Objective-C语言大部分知识点;2、创新的教学模式:手把手教您iOS开发技术,一看就懂,一学就会;3、完美贴心的操作提示:让您的眼睛始终处于操作的焦点位置,不用再满屏找光标;4、语言简洁精练:瞄准问题的核心所在,减少对思维的干扰,并节省您宝贵的时间;5、视频短小精悍:即方便于您的学习和记忆,也方便日后对功能的检索;【课程内容】包含Objective-C语言的基本数据类型,基础语法以及进阶知识。同时还讲解了流程控制、字符串、集合类型、函数和闭包等。此外、面向对象、结构体、类Class,以及手动内存管理、自动内存管理、协议与抽象类型、错误处理、iOS开发中的常见概念、Xcode操作、多媒体编程、网络编程、数据解析和加密、Sqlite数据库、网络多线程、静态/动态库的创建、常见的三种项目组件化方案、内购等实用功能也都有涉及!

深入解析Dataloader中shuffle机制与随机种子对模型训练的影响

本文深入探讨了Dataloader中shuffle机制与随机种子对机器学习模型训练的影响。通过实际案例分析,详细解释了数据打乱顺序的必要性、随机种子的正确设置方法以及两者协同工作的原理,帮助开发者避免常见陷阱并提升模型训练效果。

weixin_29166013的博客 142

硬件工程师笔记——电子器件汇总大全

本文系统总结了14种常用电子器件的工作原理及功能应用,包括电阻、压敏电阻、电容、电感、二极管、三极管、MOS管、晶振、光耦、IGBT、继电器、磁珠、可控硅和线性稳压器。每种器件从结构原理、工作特性到典型应用进行全面解析,如电阻的限流分压、电容的储能滤波、三极管的放大开关等。重点阐述了各器件在电路设计中的关键作用,如IGBT的功率控制、继电器的隔离保护、LDO的电压稳定等,并提供了实际电路应用案例。文章还整理了硬件工程师笔试面试相关的知识点和真题资源,为电子工程师提供全面的技术参考。

XU157303764的博客 2万+

js中字符串的运算

js中,常见的是字符串和其他类型变量的加法运算,我们知道,任何类型的变量和字符串相加(即字符串拼接),得出来的值均为字符串 var a = 'asdas'; var b = 121; console.log(typeof(a + b)); // string 但是,当字符串与数字类型相乘/除的时候,得到的结果将不是字符串 var a = 'asdas'; var b = 121; c...

qq_38718629的博客 3624

基于C++和Qt开发IEC104规约主站调试软件(第二章)

本章节主要讲解iec104主站软件界面设计和从站的连接功能以及部分功能代码的展示。

半青年的博客 860

iOS学习之旅之C语言day4

// //  main.m //  CLesson_练习 // //  Created by lanou3g on 15/7/28. //  Copyright (c) 2015年 com.lanou3g. All rights reserved. // #import int main(int argc, const char * argv[]) {        

u014192912的博客 262

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

人工智能世界观(认知篇)

本文系统梳理了人工智能(AI)的基础知识体系,重点解析了大模型(LLM)的核心原理、技术演进及应用边界。主要内容包括: AI基础认知:从规则驱动到数据驱动的范式转变,强调AI=数据+算法+算力的技术本质,区分了弱AI与通用AI(AGI)的能力差异。 技术发展史:回顾AI七十年发展,从符号主义、专家系统到深度学习的五次技术浪潮,重点分析Transformer架构如何推动大模型革命。 大模型原理:详解LLM的三大支柱(参数量/数据量/算力),揭示自回归生成和注意力机制的工作逻辑,对比GPT与BERT的技术路线差

轻舟已过万重山 553

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

用 JavaScript 操作字符串

 虽然 JavaScript 有很多用处,但是处理字符串是其中最流行的一个。下面让我们深入地分析一下使用 JavaScript 操作字符串。在 JavaScript 中, String 是对象。 String 对象并不是以字符数组的方式存储的,所以我们必须使用内建函数来操纵它们的值。这些内建函数提供了不同的方法来访问字符串变量的内容。下面我们详细看一下这些函数。   操作字符串的值

星光熠熠 的专栏 754

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【小程序】eval被禁,代替方法

之前写的计算器小程序昨天发现不好用了 调试下发现竟然报错说eval不能用了:eval is not a function 原来eval方法被小程序禁掉了。解决方法: 引入rpn.js 用里面的 calCommonExp(str)方法代替原来的eval(str)rpn的github: https://github.com/huruji/rpn.js在小程序对应的js中,引入rpn:注意,rpn

Maximus_ckp的博客 2万+

C# eval()函数浅谈

//绑定字段 //实现自动编号 通常使用的方法(这三个性能最好) 其他用法 //如果属性为字符串类型就不用ToString()了 DataBinder.Eval用法范例 格式化字符串参数是可选的。如果忽略参数,DataBinder.Eval 返回对象类型的值, //显示二位小数 //{0:G}代表显示True或False

Jaylon Wang的专栏 1万+

iOS 数字字符串的直接运算 + - * /

NSDecimalNumber *d1 = [NSDecimalNumber decimalNumberWithString:@"3.14"]; NSDecimalNumber *d2 = [NSDecimalNumber decimalNumberWithString:@"2"]; NSDecimalNumber *s = [d1 decimalNumberByAd...

weixin_30535843的博客 372

eval的使用

(function () { var arr = '[1,2,3,45,6,7]'; var evalObj = eval(arr); for (var i = 0; i < evalObj.length;i++){ console.log(evalObj[i]); } })();

诸葛苍穹 620

iOS常用方法——计算字符串显示的大小

UILabel固定宽来获取高度或者固定高来获取宽度: -(CGSize)sizeWithStringShowSize:(CGSize)size showFont:(CGFloat)font{ //固定宽获取高度size:CGSizeMake(100, MAXFLOAT) //固定高获取宽度size:CGSizeMake(MAXFLOAT,100) CGSize s...

浅浅的博客 1605

eval()和JSON.parse()的区别

我们将一个字符串解析成json对象时可以使用两种方法: 假设我们有一个json格式的字符串: '{ "student" : [ {"name":"鸣人","age":17}, {"name":"小樱","age":17}, {"name":"佐助","age":17} ] }' 然后我们需要把它解...

asyayw884660的博客 214

IOS手机:javascript-异常nativeEvalAndFetch:ReferenceError:找不到变量:cordova

可能存在IOS时间格式问题,写出2021.09.27和2021-09-27都是会报错而且相应功能没有效果。只有写2021/09/27才行,注意格式替换问题。

weixin_41885772的博客 487

为什么尽量不要使用eval函数和with关键字

编译过程:分词/词法分析;解析/语法分析;代码生成 词法作用域:定义在词法阶段的作用域 相关概念: 作用域:是一套规则,定义了引擎如何在作用域中通过标识符名称对变量进行查找 作用域工作模型:词法作用域、动态作用域 词法化:编译器工作的第一阶段,即对代码中的字符进行检查。如果是有状态的解析还会赋予单词语义 1.性能问题: ①.js引擎会在编译阶段进行性能优化,其...

then啥 1824

iOS下JS与OC互相调用(八)--Cordova详解+实战

扯两句,可以跳过 由于项目中Cordova相关功能一直是同事在负责,所以也没有仔细的去探究Cordova到底是怎么使用的,又是如何实现JS 与 OC 的交互。所以我基本上是从零开始研究和学习Cordova的使用,从上篇在官网实现命令行创建工程,到工程运行起来,实际项目中怎么使用Cordova,可能还有一些人并不懂,其实我当时执行完那些命令后也不懂。 后来搜索了一下关于Cor...

weixin_30613343的博客 449

iOS 根据字符串计算label高度

_decriptionLab = [[UILabel alloc] init];     [self.view addSubview:_decriptionLab];     NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];     [style setLineSpacing:16];     ...

ios_xumin的专栏 1894
上一篇: fastlane提交AdHoc测试包到蒲公英平台,获取git提交信息展示到更新说明中
下一篇: Cocoapod Package Xcode14适配问题
蟒蛇_AutoFire
博客等级 码龄16年 21粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值