Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.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
如何在ios中计算字符串方程_Ios_Objective C_Ios5_Nsstring_Nsinteger - Fatal编程技术网

如何在ios中计算字符串方程

如何在ios中计算字符串方程,ios,objective-c,ios5,nsstring,nsinteger,Ios,Objective C,Ios5,Nsstring,Nsinteger,有没有办法在ios中求解字符串方程 比如说 输入: NSString*str=@“1+2” 输出: NSInteger result=3//即str 如何做到这一点,并获得预期的结果 请帮忙 您可以做的是,您可以使用此方法获得由符号“+”分隔的字符串的组件,然后您将获得组件数组,即1,2 NSArray*foo=[str componentsSeparatedByString:@“+”] int-result=[[foo-objectAtIndex:0]integerValue]+[[foo-o

有没有办法在
ios
中求解字符串方程

比如说

输入:

NSString*str=@“1+2”

输出:

NSInteger result=3
//即
str

如何做到这一点,并获得预期的结果


请帮忙

您可以做的是,您可以使用此方法获得由符号“+”分隔的字符串的组件,然后您将获得组件数组,即1,2

NSArray*foo=[str componentsSeparatedByString:@“+”]

int-result=[[foo-objectAtIndex:0]integerValue]+[[foo-objectAtIndex:1]integerValue]


然后,您可以使用这两个元素的整数值,将它们相加,并将结果存储在一个整数变量中

您可以使用NSExpression进行以下操作:

NSExpression *expression = [NSExpression expressionWithFormat:@"1+2"];
NSLog(@"%@", [expression expressionValueWithObject:nil context:nil]);
有关更多信息,请阅读所用方法的文档。

使用以下方法:

NSString * str =@"1+2";

NSArray *arr = [str componentsSeparatedByString:@"+"];
int sum = 0;
for (int i = 0; i < [arr count]; i++) {
    sum += [[arr objectAtIndex:i] intValue];
}
NSLog(@"sum : %d",sum); 

希望它能对你有所帮助。

如果你的数学表达式足够简单,你可以按照拉詹·巴拉纳的建议走手工路线

要计算更复杂的表达式,可以使用/滥用
NSPredicate
NSExpression
组合,如本文所述:

请注意,
NSPredicate
仅在您的输入确实是一个等式(包括右侧部分)时才有必要:

为了实现正确的解析,您可以使用Objective-C的一个数学解析器。我自己也没用过,但流行的似乎很流行


我认为您需要
子字符串
您的字符串,并将每个数字存储在新的
NSstring
(integerValue)或
整数
变量中

例如:


取决于输入字符串方程的复杂性。您可以使用解析数学方程,然后从
抽象语法树(AST)

但我希望你正在寻找一些简单的,最好是已经完成的解决方案。在这种情况下,您可以尝试其中一种(不保证,我没有尝试过,只是谷歌搜索):


如果
*
而不是
+
,你会怎么做?@Anil用Aminegm Awad提供的*:)@RajanBalana答案替换+解决所有问题,而不必编写额外的代码@NeelamVerma那么你需要同意Amin Negm Awad的答案。干杯@维纳亚基尼:谢谢你的好意和感激:)谢谢你的回答+1这是正确的。除非在解析/求值过程中需要更大的灵活性,否则您不需要像my DDMathParser这样的东西。
    NSLog(@"sum : %@", [[NSExpression expressionWithFormat:@"1+4"] expressionValueWithObject:nil context:nil]);
Output :- sum : 5
    NSLog(@"mulitple : %@", [[NSExpression expressionWithFormat:@"2*4"] expressionValueWithObject:nil context:nil]);
Output :- mulitple : 8
NSPredicate* parsedExpression = [NSPredicate predicateWithFormat:@"1+2=x"];
NSExpression* leftPart = [(NSComparisonPredicate*)parsedExpression leftExpression];
NSNumber* evaluatedResult = [leftPart expressionValueWithObject:nil context:nil];
NSLog(@"Expr:%@", evaluatedResult);
NSString *str = @"1+2";
    int x = [[str substringToIndex:1]integerValue];
    int y = [[str substringFromIndex:1]integerValue];
    int z = x+y;
    NSLog(@"Sum === %d",z);