簡體   English   中英

NSString 到 NSArray

[英]NSString to NSArray

我想將NSString拆分為NSArray 例如,給定:

NSString *myString=@"ABCDEF";

我想要一個像這樣的NSArray

NSArray *myArray={A,B,C,D,E,F};

如何用 Objective-C 和 Cocoa 做到這一點?

NSMutableArray *letterArray = [NSMutableArray array];
NSString *letters = @"ABCDEF𝍱क्";
[letters enumerateSubstringsInRange:NSMakeRange(0, [letters length]) 
                            options:(NSStringEnumerationByComposedCharacterSequences) 
                         usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
    [letterArray addObject:substring];
}];

for (NSString *i in letterArray){
    NSLog(@"%@",i);
}

結果是

A
B
C
D
E
F
𝍱
क्

enumerateSubstringsInRange:options:usingBlock:適用於 iOS 4+可以枚舉不同 styles 的字符串。 一個叫做NSStringEnumerationByComposedCharacterSequences ,它會逐個字母地枚舉,但對代理對、基本字符加上組合標記、Hangul jamo 和 Indic 輔音簇很敏感,所有這些都稱為Composed Character

請注意,接受的答案“吞下” 並將क्分解為

轉換

NSString * string = @"A B C D E F";
NSArray * array = [string componentsSeparatedByString:@" "];
//Notice that in this case I separated the objects by a space because that's the way they are separated in the string

日志記錄

NSLog(@"%@", array);

安慰

這是控制台返回的內容

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

此鏈接包含基於子字符串以及基於字符集中的字符串將字符串拆分為數組的示例。 我希望那個帖子可以幫助你。

這是代碼片段

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

沒有循環你可以使用這個:

NSString *myString = @"ABCDEF";
NSMutableString *tempStr =[[NSMutableString alloc] initWithString:myString];

if([myString length] != 0)
{
    NSError  *error  = NULL;

    // declare regular expression object
    NSRegularExpression *regex =[NSRegularExpression regularExpressionWithPattern:@"(.)" options:NSMatchingReportCompletion error:&error];

    // replace each match with matches character + <space> e.g. 'A' with 'A '
    [regex replaceMatchesInString:tempStr options:NSMatchingReportCompletion range:NSMakeRange(0,[myString length]) withTemplate:@"$0 "];

    // trim last <space> character
    [tempStr replaceCharactersInRange:NSMakeRange([tempStr length] - 1, 1) withString:@""];

    // split into array
    NSArray * arr = [tempStr componentsSeparatedByString:@" "];

    // print
    NSLog(@"%@",arr);
}

此解決方案 append 借助正則表達式在每個字符前面留有空格,並使用componentsSeparatedByString<space>返回一個數組

Swift 4.2:

字符串到數組

let list = "Karin, Carrie, David"

let listItems = list.components(separatedBy: ", ")

Output:[“卡琳”,“嘉莉”,“大衛”]

數組轉字符串

let list = ["Karin", "Carrie", "David"]

let listStr = list.joined(separator: ", ")

Output:“卡琳,嘉莉,大衛”

在 Swift 中,這變得非常簡單。

Swift 3:

myString.characters.map { String($0) }

Swift 4:

myString.map { String($0) }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM