首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目标-C:-[NSString wordCount]

目标-C:-[NSString wordCount]
EN

Stack Overflow用户
提问于 2011-05-30 00:54:31
回答 7查看 8.6K关注 0票数 8

以下NSString类别方法的简单实现是什么,它返回self中的单词数,其中单词由任意数量的连续空格或换行符分隔?此外,字符串将小于140个字符,因此在本例中,我更喜欢简单性和可读性,而牺牲了一些性能。

代码语言:javascript
复制
@interface NSString (Additions)
- (NSUInteger)wordCount;
@end

我找到了以下解决方案:

  • 实现-[NSString wordCount]
  • 实现-[NSString wordCount] --看起来有点简单

但是,难道没有更简单的方法吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-05-30 02:46:41

看起来,我在问题中给出的第二个链接不仅是最快的,而且事后看来,它也是一个相对简单的实现-[NSString wordCount]

票数 1
EN

Stack Overflow用户

发布于 2011-05-30 00:59:42

为什么不做下面的事呢?

代码语言:javascript
复制
- (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];
}
票数 15
EN

Stack Overflow用户

发布于 2014-09-14 01:42:53

我相信你已经确定了“最简单”。不过,要回答您最初的问题--“以下NSString类别的简单实现.”,并将其直接张贴在这里供后人使用:

代码语言:javascript
复制
@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;
}

@end
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6171422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档