3

我有几个 NSStrings,其格式类似于以下格式:

"Hello, how       are   you?"

如何将字符串分解为单词数组?例如,对于上面的句子,我期望一个由以下组成的数组"Hello,", "how", "are", "you?"

通常我会使用函数将字符串分解成单词[NSString componentsSeparatedByCharactersInSet: NSCharacterSet set]

但是,这在这种情况下不起作用,因为单词之间的空格长度不等。注意我不会知道每个单词的大小和它们之间的空格。

我怎样才能做到这一点?我正在为 OSX 而不是 iOS 开发应用程序。

编辑:我的最终目标是检索句子中的第二个单词。如果有更简单的方法可以在不将字符串分解为数组的情况下执行此操作,请随时提出建议。

4

3 回答 3

5

尝试这个:

NSMutableArray *parts = [NSMutableArray arrayWithArray:[str componentsSeparatedByCharactersInSet:[NSCharacterSet  whitespaceCharacterSet]]];
[parts removeObjectIdenticalTo:@""];
NSString *res = [parts objectAtIndex:1]; // The second string
于 2012-09-05T21:05:32.073 回答
1

如果你不想使用 CharacterSet 试试这个来删除多余的空格:

NSString* string = @"word1, word2          word3                        word4";
bool done = false;
do {
    NSString tempStr = [string stringByReplacingOccurrencesOfString:@"  " withString:@" "];
    done = [string isEqualToString:tempStr];
    string = tempStr;
} while (!done);
NSLog(@"%@", string);

这将输出“word1,word2 word3 word4”

于 2012-09-05T21:26:02.103 回答
1

好吧,您实际上可以编写一个循环来遍历字符并在第一个空白之后找到第一个非空白,然后进一步迭代以找到结束空白(或行尾)。可能比使用其他方法之一快大约 5 倍(对象分配少得多),并且可以在大约 10 行内完成。

于 2012-09-05T21:23:57.020 回答