如何检查文本字段是否包含罗马数字

时间:2012-10-23 09:49:55

标签: iphone ios uitextfield

是否有任何方法可用于检查 UITextField 是否包含罗马数字,例如i,ii,iii,iv ......等等

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:1)

您可以在任何UITextFieldDelegate方法中通过NSRegularExpression使用正则表达式来检查您的UITextField是否具有有效的罗马数字。您可以在NSRegularExpression validate email

中查看使用NSRegularExpression的示例

你的正则表达式应该像张贴的那样: How do you match only valid roman numerals with a regular expression?

答案 2 :(得分: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验证。