我收到一个字符串:“1 + 2 + 3232 + 4”我想答案:3239。
如何在Objective-C中执行此操作?
答案 0 :(得分: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
。
答案 1 :(得分: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);
答案 2 :(得分:0)
这用于 float / int 值
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);