如何验证分数

时间:2013-08-28 13:52:56

标签: ios objective-c validation

我正在尝试编写一个函数,如果给定的字符串是有效的小数格式,则返回布尔值。

即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;
}

3 个答案:

答案 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的答案