指定された文字列が有効な小数形式であるかどうかにかかわらず、ブール値を返す関数を作成しようとしています。
たとえば、分数は 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;
}
指定された文字列が有効な小数形式であるかどうかにかかわらず、ブール値を返す関数を作成しようとしています。
たとえば、分数は 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;
}
そのために正規表現を使用できます。
-(BOOL)validateFraction:(NSString *)string{
NSString *fractionRegex = @"\\d+(/\\d+)?";
NSPredicate *fractionTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", fractionRegex];
return [fractionTest evaluateWithObject:string];
}
PSまた、その関数はゼロ除算に対して検証されず、分数の前に符号(+または-)を付けることはできません
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];
}