Um die Wörter in einer Zeichenfolge aufzulisten, sollten Sie -[NSString enumerateSubstringsInRange:options:usingBlock:]
mit NSStringEnumerationByWords
und verwenden. Alle anderen aufgelisteten Methoden verwenden ein Mittel zum Identifizieren von Wörtern, die möglicherweise nicht Gebietsschema-geeignet sind oder der Systemdefinition entsprechen. Beispielsweise werden zwei Wörter, die durch ein Komma getrennt sind, aber nicht durch Leerzeichen (z. B. "foo, bar"), von keiner der anderen Antworten als separate Wörter behandelt, sondern in Cocoa-Textansichten.
[aString enumerateSubstringsInRange:NSMakeRange(0, [aString length])
options:NSStringEnumerationByWords | NSStringEnumerationLocalized
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop){
if ([substring rangeOfString:@"ll" options:NSCaseInsensitiveSearch].location != NSNotFound)
/* do whatever */;
}];
Was -enumerateSubstringsInRange:options:usingBlock:
dokumentiert, wenn Sie es auf einem wandelbaren String aufrufen, können Sie sicher die Zeichenfolge mutieren innerhalb der enclosingRange
aufgezählt werden. Also, wenn Sie die passenden Wörter ersetzen möchten, können Sie mit etwas wie [aString replaceCharactersInRange:substringRange withString:replacementString]
.
Für einige Sprachen wie Chinesisch, Japanisch, Deutsch, Whitespace ist nicht offensichtlich Begrenzer zwischen Wörtern, daher Ken Ansatz ist der richtige. – Krodak