如何检查一个字符串是否包含英文字母(A-Z)?
答
一种方法是使用正则表达式 - 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
的rangeOfCharacterFromSet:
找到任何一个第一次出现。我应该注意到,这种方法只能找到字符串中的第一个这样的字符。也许不是你想要的。
最后,我觉得你可以用编码做一些事情,但没有给出这么多想法。也许可以确定字符串是否可以用ASCII表示(使用canBeConvertedToEncoding:
)然后检查数字/符号?
哦,你总是可以遍历字符串并检查每个字符! :)
答
你也可以使用NSCharacterSet并使用rangeOfCharacterFromSet:方法,看看如果返回NSRange是字符串的整个范围。 characterSetWithRange将是一个开始创建characterSet的好地方。
答
您可以使用简单的NSPredicate
测试。
NSString *str = @"APPLE";
NSString *regex = @"[A-Z]+";
NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
BOOL result = [test evaluateWithObject:str];
*包含*或*仅包含*? – 2011-08-20 02:32:09