我正在尝试编写一个函数,如果给定的字符串是有效的小数格式,则返回布尔值。
即G。分数如下 2/3, 1 2/3, 6/5, 80/20, 60 1/4, 等
-(BOOL)validateFraction:(NSString *)string
{
if(string is valid fraction)
return YES;
else
return NO;
}
答案 0 :(得分:6)
您可以使用正则表达式:
-(BOOL)validateFraction:(NSString *)string{
NSString *fractionRegex = @"\\d+(/\\d+)?";
NSPredicate *fractionTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", fractionRegex];
return [fractionTest evaluateWithObject:string];
}
P.S。还不是,该函数不会验证除零,并且不允许分数在前面有符号(+或 - )
答案 1 :(得分:2)
我找到了一个接受数字的解决方案,例如1/2
10 2/3
5 6/8
等。
-(BOOL)validateFraction:(NSString *)string{
NSString *fractionRegex = @"[1-9]?[ ]?[0-9]+/[1-9]+";
NSPredicate *fractionTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", fractionRegex];
return [fractionTest evaluateWithObject:string];
}
答案 2 :(得分:1)
您可以这样做:
-(BOOL)validateFraction:(NSString *)string
{
if ([string rangeOfString:@"/"].location == NSNotFound) {
return NO;
}
return YES;
}
此代码仅查看字符串@"/"
是否在给定字符串中显示为子字符串。
正如您所看到的,这是一个非常简单的解决方案,如果您知道要测试的字符串都是数值有效的字符串,则可能会有效。如果你想要更强大的东西,测试“无效”字符串,只需使用正则表达式,如@ Vladimir的答案