Kakao Explodera eller bryta en NSString i enskilda ord

Att sprida en sträng text i komponentord är ett krav för att utföra sökningar i text och annan textbehandling. Denna uppgift är lätt i kakao / mål-C, även om det krävs att man gräver genom några klassreferenser i dokumentationen. Om du behöver en mer komplicerad expansion av en sträng, kommer åtminstone denna kod att ge dig en startpunkt.


För att bryta NSString bigString till en NSArray som innehåller de enskilda orden separerade med blanksteg, använd:

NSString * bigString = @ "inte riktigt så stor";
NSArray * words = [bigString componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];

Hjärtat i denna operation är komponenten SeparatedByCharactersInSet-metod för NSString. Det bryter bigString till en rad NSStrings. Ordgränserna bestäms av NSCharacterSet-objektet som genereras av klassmetoden whitespaceCharacterSet som ger utrymme och fliktecken. De olika unicode newline-tecknen kan läggas till de vita teckenfigurerna genom att anropa whitespaceAndNewlineCharacterSet-metoden i exemplet ovan.

Naturligtvis kan ord separeras av mer än blankutrymme och nya linjer. Punkteringstecken kan hänvisas med hjälp av punktsättningCharacterSet-metoden till NSCharacterSet. För att utföra en ordentlig detonering av grammatisk text i inbördes ord separerade av blankytor, nyrader och skiljetecken måste du skapa en teckenuppsättning som är en sammanslutning av de tre uppsättningarna:

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