文字列内の単語を列挙するには、NSStringEnumerationByWords
とNSStringEnumerationLocalized
を使用して、-[NSString enumerateSubstringsInRange:options:usingBlock:]
を使用する必要があります。リストされている他のすべての方法は、ロケールに適していないかシステム定義に対応している単語を識別する手段を使用します。たとえば、空白ではなくカンマで区切られた2つの単語(たとえば「foo、bar」)は、他の回答によって別々の単語として扱われることはありませんが、Cocoaのテキストビューにあります。
[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 */;
}];
-enumerateSubstringsInRange:options:usingBlock:
のために文書化として、あなたが変更可能な文字列でそれを呼び出す場合、あなたは安全にenclosingRange
内を列挙されている文字列を変異させることができます。したがって、一致する単語を置き換える場合は、[aString replaceCharactersInRange:substringRange withString:replacementString]
のようなものを使用できます。
中国語、日本語、ドイツ語のようないくつかの言語では、空白は単語間の明白なリミッターではないため、ケンのアプローチが適切です。 – Krodak