2013-05-11 47 views

回答

-1

您可以使用這樣的,

for (int i=0; i < [myString length]; i++) { 
    ... [myString characterAtIndex:i] 
    // You can then decide how to assign a value to each individual string, via a switch. 

} 
6

根據您的需求,您可能希望通過組成的字符,其中考慮到了不同的方式來編碼重音符號,以枚舉的字符串。

它可能不是一個大問題,但如果你使用enumerateSubstringsInRange:options:usingBlock:至少它的處理。代碼可能如下所示:

NSMutableArray *result; 

NSString *string = @"Genève, Zu\u0308rich, Bellinzona"; 
//       ^
//  What humans know as: Zürich 

result = [NSMutableArray array]; 
[string enumerateSubstringsInRange: NSMakeRange(0,string.length) 
          options: NSStringEnumerationByComposedCharacterSequences 
         usingBlock: ^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop){ 
          // If you want to see the way the string has been split 
          NSLog(@"%@", substring); 
          [result addObject: substring]; 
         } 
]; 

請注意,「è」是單個字符,但「ü」已被編碼爲組合字符。兩者仍然可以正確識別用於循環。如果你使用characterAtIndex:「ü」將分成兩部分(你和¨),這很可能不是你想要的。

+0

非常好的答案。許多人只是忘記了非ASCII字符,並忽略瞭如何組合字符串的所有複雜規則(例如,讀取Unicode規範化形式)。 – 2013-05-14 13:29:03

相關問題