私の質問は基本的にどのようにNSTextStorage/NSStringの単語の数を取得するのですか?私は文字の長さではなく単語の長さを望んでいます。ありがとう。NSTextStorage/NSStringの単語数はどのようにして得られますか?
2
A
答えて
8
は、以下が最も簡単な解決策になることがあります。
- (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を追加することができます単語分割を行うとき、あなたのアカウントに、現在のロケールを取りたい場合はオプション。
1
いつでもスペースの数を見つけて追加できます。より正確な1は、すべてのnonletter文字に入れなければならないだろう的には :カンマ、fullstops、空白文字など
[[string componentsSeparatedByString:@" "] count];
0
CFStringTokenizer
はあなたの友達です。
1
NSTextStorage
を使用する場合は、words
メソッドを使用して単語数にすることができます。それは言葉をカウントするための最もメモリ効率の高い方法ではないかもしれませんが、それは句読点やその他の非単語文字を無視でかなり良い仕事をしていません:
NSString *input = @"one - two three four .";
NSTextStorage *storage = [[NSTextStorage alloc] initWithString:input];
NSLog(@"word count: %u", [[storage words] count]);
出力はword count: 4
になります。あなたが10.6以降を使っているのであれば
0
それを使用します。
NSArray *words = [theStorage words];
int wordCount = [words count];
はあなたの問題ということですか?
+1
この質問には、すでに* years * ago ...という回答があります。 – alestanis
はい、私はそれについてです。しかし、もし完全に停止した後にちょうど1の代わりに2つのスペースを使用すればどうなるでしょうか(私は今何をしていますか?) – TheAmateurProgrammer
文字列を検索し、すべての二重スペースを単一のスペースに置き換えることができます。 [[[yourString stringByReplacingOccurrencesOfString:@ "" withString:@ ""] componentsSeparatedByString:@ ""]カウント]; – hauntsaninja