Cocoa Explota o rompe una NSString en palabras individuales

Separar una cadena de texto en palabras componentes es un requisito para realizar búsquedas en el texto y otro procesamiento de texto. Esta tarea es fácil en Cocoa / Objective-C, aunque requiere revisar algunas referencias de clase en la documentación. Si necesita una expansión más complicada de una cadena, al menos este código le dará un punto de partida.


Para dividir el NSString bigString en una NSArray que contenga las palabras individuales separadas por espacios en blanco, use:

NSString * bigString = @ "no es realmente tan grande";
NSArray * palabras = [bigString componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];

El corazón de esta operación es el método componentsSSeparatedByCharactersInSet de NSString. Rompe bigString en una serie de NSStrings. Los límites de palabras se establecen mediante el objeto NSCharacterSet generado por el método de clase whitespaceCharacterSet que proporciona espacios y caracteres de tabulación. Los diversos caracteres de nueva línea de Unicode se pueden agregar a esos caracteres de espacio en blanco llamando al método whitespaceAndNewlineCharacterSet en el ejemplo anterior.

Por supuesto, las palabras pueden estar separadas por más que espacios en blanco y nuevas líneas. Se puede hacer referencia a los caracteres de puntuación utilizando el método punctuationCharacterSet para NSCharacterSet. Para realizar una detonación correcta del texto gramatical en palabras constitutivas separadas por espacios en blanco, nuevas líneas y puntuación, debe crear un conjunto de caracteres que sea una unión de esos tres conjuntos:

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