1

UITextFieldにi、ii、iii、iv ...などのローマ数字が含まれているかどうかを確認するために使用できるメソッドはありますか?

4

3 に答える 3

1

Regex+ NSPredicateを使用する

-(BOOL)isValidForRoman:(NSString *)text
{
    NSString *romanRegex = @"^(?=.)(?i)M*(D?C{0,3}|C[DM])(L?X{0,3}|X[LC])(V?I{0,3}|I[VX])$";
    NSPredicate *romanTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", romanRegex]; 
    return ([romanTest evaluateWithObject:text]);
}

これRegexRoman検証用です。

于 2012-10-23T10:21:35.150 に答える
1

NSRegularExpressionいずれかのUITextFieldDelegateメソッドで正規表現を使用しUITextFieldて、有効なローマ数字があるかどうかを確認できます。の使用例を見ることができますNSRegularExpressionNSRegularExpression検証メール

正規表現は、次のように投稿されている必要が あります。有効なローマ数字のみを正規表現と一致させるにはどうすればよいですか。

于 2012-10-23T10:03:53.323 に答える
1

あなたができる唯一のこと(しかしおそらく他の解決策があるかもしれません)はそれらの文字のUITextField文字列をチェックすることです:

Bool find = NO;
NSArray *romans = [NSArray arrayWithObjects:@"i", @"ii", @"ii", @"vi", nil]; //Fill the array as you want

for(NSString *str in romans)
{
  if([textField.text rangeOfString:str].location != NSNotFound)
  {
    find = YES;
    break;
  }
}

if(find)
{
  //Roman letter found
}
于 2012-10-23T09:56:01.877 に答える