如何检查字符串是否包含Objective-C中的英文字母(A到Z)? 在PHP中,有preg_match方法。
答案 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)