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]];

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]];

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.