Kakao Explodieren oder brechen Sie einen NSString in einzelne Wörter

Das Aufteilen einer Textzeichenfolge in Komponentenwörter ist eine Voraussetzung für die Suche in Text und anderer Textverarbeitung. Diese Aufgabe ist in Cocoa / Objective-C einfach, obwohl einige Klassenreferenzen in der Dokumentation durchsucht werden müssen. Wenn Sie eine kompliziertere Erweiterung einer Zeichenfolge benötigen, gibt Ihnen dieser Code zumindest einen Startpunkt.


Um den NSString bigString in ein NSArray aufzuteilen, das die einzelnen Wörter enthält, die durch Leerzeichen getrennt sind, verwenden Sie:

NSString * bigString = @ "nicht wirklich so groß";
NSArray * words = [bigString componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];

Das Herzstück dieser Operation ist die componentsSeparatedByCharactersInSet-Methode von NSString. Es zerreißt bigString in ein Array von NSStrings. Die Wortgrenzen werden vom NSCharacterSet-Objekt festgelegt, das von der Klassenmethode whitespaceCharacterSet generiert wird, die Leerzeichen und Tabulatorzeichen bereitstellt. Die verschiedenen Unicode-Newline-Zeichen können zu diesen Whitespace-Zeichen hinzugefügt werden, indem die Methode whitespaceAndNewlineCharacterSet im obigen Beispiel aufgerufen wird.

Natürlich können Wörter durch mehr als Leerzeichen und Zeilenumbrüche getrennt werden. Interpunktionszeichen können mit der punctuationCharacterSet-Methode auf NSCharacterSet referenziert werden. Um eine korrekte Detonation von grammatikalischem Text in konstituierende Wörter durchzuführen, die durch Leerzeichen, Zeilenumbrüche und Satzzeichen getrennt sind, müssen Sie einen Zeichensatz erstellen, der eine Vereinigung dieser drei Gruppen darstellt:

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