如何检查字符串是否包含英文字母(A-Z)?

时间:2011-08-20 02:07:03

标签: iphone objective-c ios

如何检查字符串是否包含Objective-C中的英文字母(A到Z)? 在PHP中,有preg_match方法。

4 个答案:

答案 0 :(得分:14)

一种方法是使用正则表达式 - NSRegularExpression类。下面演示了如何检测任何英文字母,但只有整个字符串包含此类字母时,才能修改模式以匹配。类似于^[a-zA-Z]*$

NSRegularExpression *regex = [[[NSRegularExpression alloc]
  initWithPattern:@"[a-zA-Z]" options:0 error:NULL] autorelease];

// Assuming you have some NSString `myString`.
NSUInteger matches = [regex numberOfMatchesInString:myString options:0
  range:NSMakeRange(0, [myString length])];

if (matches > 0) {
  // `myString` contains at least one English letter.
}

或者,您可以构建一个包含您感兴趣的字符的NSCharacterSet,并使用NSString的{​​{3}}来查找任何一个字符的第一个匹配项。我应该注意,此方法只在字符串中找到第一个这样的字符。也许不是你想要的。

最后,我觉得你可以用编码做点什么,但是没有考虑过这么多。也许确定字符串是否可以用ASCII表示(使用rangeOfCharacterFromSet:)然后检查数字/符号?

哦,你总是可以遍历字符串并检查每个角色! :)

答案 1 :(得分:4)

您可以使用简单的NSPredicate测试。

NSString *str = @"APPLE";
NSString *regex = @"[A-Z]+"; 
NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 
BOOL result = [test evaluateWithObject:str];

答案 2 :(得分:1)

您还可以使用NSCharacterSet并使用rangeOfCharacterFromSet:方法查看返回的NSRange是否是字符串的整个范围。 characterSetWithRange将是开始创建characterSet的好地方。

答案 3 :(得分:0)

您可以使用NSRegularExpression课程(可以查看课程中的Apple文档here