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]);
}

Regex是为了Roman验证。

于 2012-10-23T10:21:35.150 回答
1

NSRegularExpression您可以通过任何方法使用正则表达式UITextFieldDelegate来检查您UITextField是否有有效的罗马数字。你可以看到一个使用的例子NSRegularExpressionNSRegularExpression validate email

您的正则表达式应该类似于以下内容: 如何仅将有效的罗马数字与正则表达式匹配?

于 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 回答