拆分

你可以將字串拆分為零件陣列,除以分隔符

NSString * yourString = @"Stack,Exchange,Network";
NSArray * yourWords = [yourString componentsSeparatedByString:@","]; 
// Output: @[@"Stack", @"Exchange", @"Network"]

如果你需要拆分一組幾個不同的分隔符,請使用 -[NSString componentsSeparatedByCharactersInSet:]

NSString * yourString = @"Stack Overflow+Documentation/Objective-C";
NSArray * yourWords = [yourString componentsSeparatedByCharactersInSet:
                      [NSCharacterSet characterSetWithCharactersInString:@"+/"]];
// Output: @[@"Stack Overflow", @"Documentation", @"Objective-C"]`

如果需要將字串分解為單個字元,請迴圈字串的長度並將每個字元轉換為新字串。

NSMutableArray * characters = [[NSMutableArray alloc] initWithCapacity:[yourString length]];
for (int i = 0; i < [myString length]; i++) {
    [characters addObject: [NSString stringWithFormat:@"%C", 
                                      [yourString characterAtIndex:i]];
}

長度示例中一樣 ,請記住,此處的字元是 UTF-16 程式碼單元,不一定是使用者視為字元的內容。如果你將這個迴圈與 @"🇮🇹" 一起使用,你會發現它被分成了四個部分。

要獲取使用者感知字元的列表,請使用 -enumerateSubstringsInRange:options:usingBlock:

NSMutableArray * characters = [NSMutableArray array];
[yourString enumerateSubstringsInRange:(NSRange){0, [yourString length]}
                               options:NSStringEnumerationByComposedCharacterSequences
                            usingBlock:^(NSString * substring, NSRange r, NSRange s, BOOL * b){
                                [characters addObject:substring];
                            }];

這樣可以保留像義大利標誌這樣的字形簇作為單個子字串。