тому назад...

мой вопрос в основном, как вы получаете количество слов в NSTextStorage / NSString? Я не хочу, чтобы длина символа, а длина слова. Благодарю.

Ответы на вопрос(3)

Решение Вопроса

следующее может быть самым простым решением:

- (NSUInteger)numberOfWordsInString:(NSString *)str {
    __block NSUInteger count = 0;
    [str enumerateSubstringsInRange:NSMakeRange(0, [str length])
                            options:NSStringEnumerationByWords|NSStringEnumerationSubstringNotRequired
                         usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
        count++;
    }];
    return count;
}

Если вы хотите учесть текущую локаль при делении слов, вы также можете добавить NSStringEnumerationLocalized к опциям.

более точным, нужно принять во внимание все символы, не являющиеся буквами: запятые, полные остановки, пробельные символы и т. Д.

[[string componentsSeparatedByString:@" "] count];
 TheAmateurProgrammer18 янв. 2011 г., 13:55
Да я хоть об этом. Но что, если я использую 2 пробела вместо 1 после полной остановки (что я и делаю сейчас)?
 hauntsaninja18 янв. 2011 г., 13:57
Вы можете выполнить поиск по строке и заменить все двойные пробелы одним пробелом. [[[yourString stringByReplacingOccurferencesOfString: @ "" withString: @ ""] componentsSeparatedByString: @ ""] count];

Когда используешьNSTextStorage, вы можете использоватьwords способ добраться до количества слов. Возможно, это не самый эффективный способ подсчета слов, но он отлично справляется с игнорированием знаков препинания и других несловесных символов:

NSString *input = @"one - two  three   four .";
NSTextStorage *storage = [[NSTextStorage alloc] initWithString:input];
NSLog(@"word count: %u", [[storage words] count]);

Выход будетword count: 4.

Ваш ответ на вопрос