NSString的enumerateSubstrings不包含符号

时间:2011-02-28 12:17:30

标签: iphone objective-c nsstring enumeration

当使用NSString的enumerateSubstringsInRange:options:usingBlock:且选项设置为NSStringEnumerationByWords时,它不包含/*//等符号,这些符号应与字词类似由空格分隔。

我也尝试使用NSStringEnumerationByComposedCharacterSequences,但即使没有这个选项,它似乎完全相同,它只是通过每一个字母。

他们无法枚举通过空格分隔的每个子字符串吗?使用enumerateSubstringsInRange:options:usingBlock:提供这样做听起来很简单。

修改

我还使用选项NSEnumerationReverse向后通过子串。

1 个答案:

答案 0 :(得分:1)

你可以使用NSScanner来做这样的事情。这有点长远,但如果enumerate...消息没有为你做,那么可能值得一看。

例如,您可以执行类似

的操作
NSString *output = nil;
NSCharacterSet *whitespaceCharSet = [NSCharacterSet whitespaceCharacterSet];

NSScanner *scanner = [[NSScanner alloc] initWithString:someString];

// should skip leading whitespace and read everything up to the next whitespace
[scanner scanUpToCharactersFromSet:whitespaceCharSet intoSring:&output];

[scanner release];

一个粗略的例子,但NSScanner的文档非常简单。

编辑:或者,您可以执行以下操作:

NSString *someString = <...>; // get your string somehow

NSCharacterSet *charSet = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSArray *components = [someString componentsSeparatedByCharactersInSet:charSet];

[components
 enumerateObjectsWithOptions:NSEnumerationReverse
 usingBlock:^(id obj, NSUInteger index, BOOL *stop) {
        // do stuff
    }];