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.