2011-08-20 4 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를 볼 수 있습니다)

1

또한 NSCharacterSet를 사용하고 rangeOfCharacterFromSet 사용할 수 있습니다 반환 NSRange 문자열의 전체 범위가 있는지 확인하는 방법을. characterSetWithRange은 캐릭터 셋을 만들기 시작할 수있는 좋은 장소입니다.

4

간단한 NSPredicate 테스트를 사용할 수 있습니다.

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