0

我得到一个字符串:“1+2+3232+4”,我想把它变成答案:3239。

我如何在 Objective-C 中做到这一点?

4

3 回答 3

15

对于简单的表达式,您可以使用NSExpression

NSExpression *e = [NSExpression expressionWithFormat:@"1+2+3232+4"];
NSNumber *result = [e expressionValueWithObject:nil context:nil];
NSLog(@"%@", result);

对于更复杂的表达式,您应该使用适当的数学表达式解析器,例如https://github.com/davedelong/DDMathParser

备注:这种方法的一个潜在问题是整数不会自动转换为浮点数。例如, "4/3"计算结果为1,而不是1.3333333

于 2013-09-05T13:37:38.290 回答
2
NSString *string = @"1+2+3232+4";
NSArray *array = [string componentsSeparatedByString:@"+"];

NSInteger result = 0;
for (NSString *value in array)
   result += [value integerValue];
NSLog(@"%i", result);
于 2013-09-05T13:37:27.977 回答
0

这也用于浮点/整数值

NSString *myStringNumber = @"5+1+2+3.5+4/5+3.5*86";
NSArray *convertNumber = [myStringNumber componentsSeparatedByString:@"+"];
float sumValue = 0;
for (NSString *number in convertNumber) {
   sumValue += [number floatValue];
}
NSLog(@"Result is : %f", sumValue); 
于 2013-09-05T13:53:01.743 回答