如何在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);