2011-08-20 60 views

Trả lời

13

Một cách tiếp cận sẽ là sử dụng cụm từ thông dụng - lớp NSRegularExpression. Phần sau minh họa cách bạn có thể phát hiện bất kỳ chữ cái tiếng Anh nào nhưng mẫu có thể được sửa đổi để chỉ khớp nếu toàn bộ chuỗi bao gồm các chữ cái đó. Một cái gì đó như ^[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. 
} 

Ngoài ra, bạn có thể xây dựng một NSCharacterSet chứa các ký tự bạn đang quan tâm và sử dụng NSString 's rangeOfCharacterFromSet: để tìm sự xuất hiện đầu tiên của bất kỳ ai. Tôi nên lưu ý rằng phương pháp này chỉ tìm thấy ký tự đầu tiên trong chuỗi. Có lẽ không phải những gì bạn đang sau.

Cuối cùng, tôi cảm thấy như bạn có thể làm điều gì đó với mã hóa, nhưng không đưa ra nhiều suy nghĩ này. Có lẽ xác định nếu chuỗi có thể được biểu diễn bằng cách sử dụng ASCII (sử dụng canBeConvertedToEncoding:) và sau đó kiểm tra các số/ký hiệu?

Ồ, và bạn luôn có thể lặp qua chuỗi và kiểm tra từng ký tự! :)

0

Bạn có thể sử dụng NSRegularExpression Class (tài liệu hướng dẫn của Apple trên lớp có thể được xem here)

1

Bạn cũng có thể sử dụng NSCharacterSet và sử dụng rangeOfCharacterFromSet: phương pháp để xem nếu NSRange trả lại là toàn bộ phạm vi của chuỗi. characterSetWithRange sẽ là một nơi tốt để bắt đầu tạo nhân vật của bạn.

4

Bạn có thể sử dụng thử nghiệm NSPredicate đơn giản.

NSString *str = @"APPLE"; 
NSString *regex = @"[A-Z]+"; 
NSPredicate *test = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 
BOOL result = [test evaluateWithObject:str]; 
Các vấn đề liên quan