Entfernen Sie Leerzeichen aus der Zeichenfolge in Objective-C

Antworten:

216

Dafür gibt es in der NSString-Klasse eine Methode. Überprüfen Sie stringByTrimmingCharactersInSet:(NSCharacterSet *)set. Sie sollten [NSCharacterSet whitespaceCharacterSet]als Parameter verwenden:

NSString *foo = @" untrimmed string ";
NSString *trimmed = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
Eimantas
quelle
4
Dies wird auch nachgestellte Leerzeichen kürzen (was wünschenswert sein kann oder nicht) (Die ursprüngliche Frage fordert, es einfach von Anfang an zu entfernen).
lnafziger
1
stringByTrimmingCharactersInSetEntfernt nur Zeichen vom Anfang und Ende der Zeichenfolge, nicht die Zeichen in der Mitte. Verwenden Sie für diejenigen, die versuchen, Leerzeichen in der Mitte eines Strings zu entfernen [yourString stringByReplacingOccurrencesOfString:@" " withString:@""].
Arnab
74

Sie können die stringByTrimmingCharactersInSet NSString- Methode mit dem WhitespaceAndNewlineCharacterSet NSCharacterSet als solchem ​​verwenden:

NSString *testString = @"  Eek! There are leading and trailing spaces  ";
NSString *trimmedString = [testString stringByTrimmingCharactersInSet:
                             [NSCharacterSet whitespaceAndNewlineCharacterSet]];
John Parker
quelle
4
+1 für die Empfehlung des WhitespaceAndNewlineCharacterSet und nicht nur des WhitespaceCharacterSet.
Rik Smith-Unna
1
-1 an Apple für die Neudefinition von Leerzeichen, um keine Zeilenumbrüche einzuschließen (sie hätten stattdessen ein neues inlineWhitespaceCharacterSet erstellen sollen)
AlexChaffee
Dies wird auch nachgestellte Leerzeichen kürzen (was wünschenswert sein kann oder nicht) (Die ursprüngliche Frage fordert, es einfach von Anfang an zu entfernen).
lnafziger
7

Ich habe ein schnelles Makro geschrieben, um die Menge an Code zu reduzieren, die geschrieben werden muss.

Schritt 1: Bearbeiten Sie die PCH-Datei Ihrer App. Diese sollte Project-Name-Prefix.pch heißen

#define TRIM(string) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]

Schritt 2: Schreiben Sie viel weniger Code, wenn Sie eine Zeichenfolge zuschneiden möchten

NSLog(@"Output: %@ %@", TRIM(@"Hello        "), TRIM(@"World      "));

Output: Hello World
user511037
quelle
6

Dadurch wird nur der führende Leerraum entfernt.

NSString *myString = @"   123   ";
NSLog(@"mystring %@, length %d",myString, myString.length);
NSRange range = [myString rangeOfString:@"^\\s*" options:NSRegularExpressionSearch];
myString = [myString stringByReplacingCharactersInRange:range withString:@""];
NSLog(@"mystring %@, length %d",myString, myString.length);

Ausgabe

mystring    123   , length 9
mystring 123   , length 6
Ryan Heitner
quelle