Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective-C计算字符串值_Objective C_Nsstring_Int_Nslog - Fatal编程技术网

Objective-C计算字符串值

Objective-C计算字符串值,objective-c,nsstring,int,nslog,Objective C,Nsstring,Int,Nslog,这是我的主要观点: int x=0; NSString *new=[[NSString alloc]initWithString:@"9+4"]; x=[new intValue]; NSLog(@"hi %i",x); 这导致9。因为给定字符串的intValue将只读数字,并在字符不是数字时停止 那么,如何打印字符串的结果并获得13呢???您将不得不手动解析它。您可以编写NSString的子类,覆盖intValue方法,并对其进行解析以找到算术符号并执行数学运算,但这几乎是自动的,我担心您需

这是我的主要观点:

int x=0;
NSString *new=[[NSString alloc]initWithString:@"9+4"];
x=[new intValue];
NSLog(@"hi %i",x);
这导致9。因为给定字符串的intValue将只读数字,并在字符不是数字时停止


那么,如何打印字符串的结果并获得13呢???

您将不得不手动解析它。您可以编写NSString的子类,覆盖
intValue
方法,并对其进行解析以找到算术符号并执行数学运算,但这几乎是自动的,我担心您需要自己对其进行解析和评估,因为像这样看似简单的计算超出了苹果提供的基本字符串解析的范围。如果您习惯于Ruby、Perl之类的解释性语言,那么这似乎是一个很简单的问题。但是对于编译语言来说,支持表达式的运行时计算是不常见的(有些语言确实支持表达式,但Objective-C不是其中之一)。

更改这一行

NSString *new=[[NSString alloc]initWithString:@"9+4"];


当试图解析字符串中的表达式时,您将要使用它。我在谷歌上搜索Objective-C.

实际上,
n表达式就是为了这个:

NSExpression *expression = [NSExpression expressionWithFormat:@"9+4"];
// result is a NSNumber
id result = [expression expressionValueWithObject:nil context:nil];

NSLog(@"%@", result);

NSExpression
功能非常强大,建议您仔细阅读。您可以通过格式字符串传入对象来使用变量。

首先,我很确定字符串只是一个示例,输入是意外的。其次,我会使用
%d
%u
序列,
%f
代表浮点。哈,这正是他一直想要的:)如果你正在寻找与我之前寻找的相同的东西,请查看我关于同一主题的问题的公认答案,这对我有很大帮助,而且效果非常好:很好的解决方案,但请不要对其他答案发垃圾邮件:-)
NSExpression *expression = [NSExpression expressionWithFormat:@"9+4"];
// result is a NSNumber
id result = [expression expressionValueWithObject:nil context:nil];

NSLog(@"%@", result);