文字列内の単語を列挙するには、-[NSString enumerateSubstringsInRange:options:usingBlock:]
withNSStringEnumerationByWords
とを使用する必要がありNSStringEnumerationLocalized
ます。リストされている他のすべての方法は、ロケールに適していないか、システム定義に対応していない可能性のある単語を識別する手段を使用します。たとえば、空白ではなくコンマで区切られた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]
。