web-dev-qa-db-fra.com

Supprimer les espaces de la chaîne dans Objective-C

J'ai quelques cordes. Certains ont un espace au début et d'autres non. Je veux vérifier si une chaîne de caractères commence par un espace et le supprimer.

72
Crazer

Il existe une méthode pour cela dans la classe NSString. Vérifiez stringByTrimmingCharactersInSet:(NSCharacterSet *)set. Tu devrais utiliser [NSCharacterSet whitespaceCharacterSet] comme paramètre:

NSString *foo = @" untrimmed string ";
NSString *trimmed = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
206
Eimantas

Vous pouvez utiliser la méthode stringByTrimmingCharactersInSet NSString avec la méthode whitespaceAndNewlineCharacterSet NSCharacterSet en tant que telle:

NSString *testString = @"  Eek! There are leading and trailing spaces  ";
NSString *trimmedString = [testString stringByTrimmingCharactersInSet:
                             [NSCharacterSet whitespaceAndNewlineCharacterSet]];
69
John Parker

J'ai écrit une macro rapide pour réduire la quantité de code à écrire.

Étape 1: Modifiez le fichier PCH de votre application. Celui-ci doit s'appeler Project-Name-Prefix.pch.

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

Étape 2: appréciez écrire moins de code lorsque vous souhaitez couper une chaîne

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

Output: Hello World
7
user511037

Cela supprimera uniquement les espaces blancs qui précèdent.

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

sortie

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