我有一个程序可以计算一组特定的方程。用户将数字输入UITextField,程序为他们计算它。我想为用户提供插入平方根的选项,而不必先弄清楚平方根的确切值。
我的问题:当我尝试通过以下方式提取文本字段的浮点值时:
floatNumber = [[textField text] floatValue];
具有平方根的文本字段返回 0。有没有办法用平方根提取数字?
谢谢尼尔。
假设您的√
可能嵌入到方程中...您需要在字符串中找到√
的位置。这将是您系列的开始。范围的长度将由位置 + 后面的数字计数定义。如果您只想要数字,则只需将位置增加 1。
您将有边缘情况需要处理,但这是一个开始:
NSString *equation = @"(√646474)";
NSRange rangeOfSqrRoot = [equation rangeOfString:@"√"];
rangeOfSqrRoot = NSMakeRange(rangeOfSqrRoot.location + 1, (equation.length - 1) - rangeOfSqrRoot.location);
__block NSCharacterSet *charSet = [NSCharacterSet decimalDigitCharacterSet];
NSRange rangeOfNonNumber = [equation rangeOfCharacterFromSet:[charSet invertedSet] options:NSLiteralSearch range:rangeOfSqrRoot];
rangeOfSqrRoot = NSMakeRange(rangeOfSqrRoot.location, rangeOfNonNumber.location - 2);
__block NSMutableString *numbers = [NSMutableString string];
[equation enumerateSubstringsInRange:rangeOfSqrRoot options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
NSRange r = [substring rangeOfCharacterFromSet:charSet];
if (r.location != NSNotFound) {
[numbers appendString:substring];
} else {
*stop = YES;
}
}];
NSLog(@"%@", numbers);
output: 646474
另外,您是否尝试过使用 NSExpression
来处理您的数学运算?http://nshipster.com/nsexpression/
前任:
NSExpression *expression = [NSExpression expressionWithFormat:@"4 + 5 - 2**3"];
NSLog(@"%@", [expression expressionValueWithObject:nil context:nil]);
注意:您无法执行[NSExpression expressionWithFormat:@"√25"]
。你会得到:NSInvalidArgumentException', reason: 'Unable to parse the format string "√25 == 1"'