-2

指定された文字列が有効な小数形式であるかどうかにかかわらず、ブール値を返す関数を作成しようとしています。

たとえば、分数は 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;
}
4

3 に答える 3

6

そのために正規表現を使用できます。

-(BOOL)validateFraction:(NSString *)string{
    NSString *fractionRegex = @"\\d+(/\\d+)?";
    NSPredicate *fractionTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", fractionRegex];
    return [fractionTest evaluateWithObject:string];
}

PSまた、その関数はゼロ除算に対して検証されず、分数の前に符号(+または-)を付けることはできません

于 2013-08-28T13:58:01.490 に答える
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];
}
于 2013-08-29T11:42:12.853 に答える