2011-08-20 111 views

回答

13

一種方法是使用正則表達式 - 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你感興趣的人物和使用NSStringrangeOfCharacterFromSet:找到任何一個第一次出現。我應該注意到,這種方法只能找到字符串中的第一個這樣的字符。也許不是你想要的。

最後,我覺得你可以用編碼做一些事情,但沒有給出這麼多想法。也許可以確定字符串是否可以用ASCII表示(使用canBeConvertedToEncoding:)然後檢查數字/符號?

哦,你總是可以遍歷字符串並檢查每個字符! :)

0

可以使用NSRegularExpression類(蘋果對類文檔可以被看作here

4

您可以使用簡單的NSPredicate測試。

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