Cacao Esplodere o rompere una NSString in singole parole

Separare una stringa di testo in parole componente è un requisito per eseguire ricerche nel testo e in altre elaborazioni del testo. Questo compito è facile in Cocoa / Objective-C, sebbene richieda di scavare attraverso alcuni riferimenti di classe nella documentazione. Se hai bisogno di un'espansione più complicata di una stringa, almeno questo codice ti darà un punto di partenza.


Per interrompere NSString bigString in un NSArray contenente le singole parole separate da spazi bianchi, utilizzare:

NSString * bigString = @ "non proprio così grande";
NSArray * words = [bigString componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];

Il cuore di questa operazione è il metodo componentsSeparatedByCharactersInSet di NSString. Rompe bigString in una serie di NSString. I limiti di parola sono impostati dall'oggetto NSCharacterSet generato dal metodo di classe whitespaceCharacterSet che fornisce spazio e caratteri di tabulazione. I vari caratteri unicode di nuova riga possono essere aggiunti a quei caratteri di spazi bianchi chiamando il metodo whitespaceAndNewlineCharacterSet nell'esempio precedente.

Naturalmente, le parole possono essere separate da più di spazi vuoti e nuove righe. I caratteri di punteggiatura possono essere referenziati utilizzando il metodo punctuationCharacterSet su NSCharacterSet. Per eseguire una detonazione corretta del testo grammaticale in parole costituenti separate da spazi bianchi, nuove righe e segni di punteggiatura, è necessario creare un set di caratteri che sia un'unione di questi tre set:

NSMutableCharacterSet * separators = [NSMutableCharacterSet punctuationCharacterSet];
[separators formUnionWithCharacterSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSArray * words = [bigString componentsSeparatedByCharactersInSet: separators];