以下NSString类别方法的简单实现是什么,它返回self中的单词数,其中单词由任意数量的连续空格或换行符分隔?此外,字符串将小于140个字符,因此在本例中,我更喜欢简单性和可读性,而牺牲了一些性能。
@interface NSString (Additions)
- (NSUInteger)wordCount;
@end我找到了以下解决方案:
但是,难道没有更简单的方法吗?
发布于 2011-05-30 02:46:41
看起来,我在问题中给出的第二个链接不仅是最快的,而且事后看来,它也是一个相对简单的实现-[NSString wordCount]。
发布于 2011-05-30 00:59:42
为什么不做下面的事呢?
- (NSUInteger)wordCount {
NSCharacterSet *separators = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSArray *words = [self componentsSeparatedByCharactersInSet:separators];
NSIndexSet *separatorIndexes = [words indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
return [obj isEqualToString:@""];
}];
return [words count] - [separatorIndexes count];
}发布于 2014-09-14 01:42:53
我相信你已经确定了“最简单”。不过,要回答您最初的问题--“以下NSString类别的简单实现.”,并将其直接张贴在这里供后人使用:
@implementation NSString (GSBString)
- (NSUInteger)wordCount
{
__block int words = 0;
[self enumerateSubstringsInRange:NSMakeRange(0,self.length)
options:NSStringEnumerationByWords
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {words++;}];
return words;
}
@endhttps://stackoverflow.com/questions/6171422
复制相似问题