Per enumerare le parole in una stringa, è necessario utilizzare -[NSString enumerateSubstringsInRange:options:usingBlock:]
con NSStringEnumerationByWords
e NSStringEnumerationLocalized
. Tutti gli altri metodi elencati utilizzano un mezzo per identificare le parole che potrebbero non essere appropriate alle impostazioni internazionali o corrispondere alla definizione del sistema. Ad esempio, due parole separate da una virgola ma non da spazi bianchi (ad esempio "foo, bar") non saranno trattate come parole separate da nessuna delle altre risposte, ma sono presenti nelle visualizzazioni di testo 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 */;
}];
come documentato per -enumerateSubstringsInRange:options:usingBlock:
, se lo si chiama su una stringa mutabile, si può mutare in modo sicuro la stringa viene enumerato all'interno del enclosingRange
. Quindi, se vuoi sostituire le parole corrispondenti, puoi farlo con qualcosa come [aString replaceCharactersInRange:substringRange withString:replacementString]
.
fonte
2012-06-23 18:15:31
Per alcune lingue come cinese, giapponese, tedesco, lo spazio bianco non è un limitatore evidente tra le parole, quindi l'approccio di Ken è corretto. – Krodak