Supprimer les caractères de NSString?

95
NSString *myString = @"A B C D E F G";

Je veux supprimer les espaces, donc la nouvelle chaîne serait "ABCDEFG".

Raju
la source

Réponses:

280

Vous pouvez utiliser:

NSString *stringWithoutSpaces = [myString 
   stringByReplacingOccurrencesOfString:@" " withString:@""];
Tom Jefferys
la source
Veuillez mettre en forme les extraits de code dans une police à espacement fixe pour plus de lisibilité. À l'heure actuelle, distinguer la première corde est un peu délicat
Mike Abdullah
4
Notez que «occurrences» est orthographié avec deux r.
plus 1 dans l'espoir d'atteindre 256. smh
Will Von Ullrich
Cela fonctionne UNIQUEMENT si les «espaces» se comportent correctement. Valeur ASCII = 32 (% 20) caractères. Pour supprimer TOUS les caractères d'espace blanc possibles, utilisez la solution de Jim Dovey ci-dessous.
Linges du
80

Si vous souhaitez prendre en charge plusieurs espaces à la fois, ou prendre en charge n'importe quel espace, vous pouvez le faire:

NSString* noSpaces =
    [[myString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
                           componentsJoinedByString:@""];
Jim Dovey
la source
5
C'est plus utile pour un usage général.
mxg
je l'aime! Je souhaite supprimer tous les caractères spéciaux d'un numéro de téléphone et ne conserver que les chiffres.
karim
beaucoup plus simple: yourString = [yourString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
Daniel
3
Le rognage ne supprime que les caractères correspondants lorsqu'ils apparaissent au début et à la fin de la chaîne, ainsi `ABCDEF` deviendrait A B C D E F.
Jim Dovey
11

Tiré de NSString

stringByReplacingOccurrencesOfString:withString:

Renvoie une nouvelle chaîne dans laquelle toutes les occurrences d'une chaîne cible dans le récepteur sont remplacées par une autre chaîne donnée.

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement

Paramètres

cible

The string to replace.

remplacement

The string with which to replace target.

Valeur de retour

Une nouvelle chaîne dans laquelle toutes les occurrences de cible dans le récepteur sont remplacées par remplacement.

visakh7
la source
11

Tout ce qui précède fonctionnera bien. Mais la bonne méthode est la suivante:

yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

Cela fonctionnera comme une méthode TRIM. Cela supprimera tous les espaces avant et arrière.

Merci

Mitesh Khatri
la source
7
Non, cela ne supprime que les espaces du début et de la fin de la chaîne, pas les espaces entre les autres caractères.
Jim Dovey
@JimDovey Je mentionne déjà cette chose dans mon commentaire. #Cela fonctionnera comme une méthode TRIM. Il supprimera tous les espaces avant et arrière. #
Mitesh Khatri
2
@MiteshKhatri Oui, mais cela ne résout toujours pas le problème d'origine, qui consiste à supprimer tous les espaces du milieu de la chaîne, pas seulement les espaces de début et de fin.
Jim Dovey
@JimDovey pour supprimer tous les espaces, utilisez le code ci-dessous: MyStr = [MyStr stringByReplacingOccurrencesOfString: @ "" withString: @ ""];
Mitesh Khatri
1
Cela ne supprimera toujours que les caractères d'espace ASCII; des éléments tels que les espaces de largeur nulle, les espaces insécables Unicode, les retours à la ligne, les sauts de formulaire, les tabulations, les tabulations verticales, etc. resteront dans la chaîne. D'où l'existence de [NSCharacterSet whitespaceCharacterSet]et [NSCharacterSet whitespaceAndNewlineCharacterSet].
Jim Dovey
6

si la chaîne est mutable , vous pouvez la transformer en place en utilisant ce formulaire:

[string replaceOccurrencesOfString:@" "
                        withString:@""
                           options:0
                             range:NSMakeRange(0, string.length)];

ceci est également utile si vous souhaitez que le résultat soit une instance modifiable d'une chaîne d'entrée:

NSMutableString * string = [concreteString mutableCopy];
[string replaceOccurrencesOfString:@" "
                        withString:@""
                           options:0
                             range:NSMakeRange(0, string.length)];
Justin
la source
3

Vous pouvez essayer ceci

- (NSString *)stripRemoveSpaceFrom:(NSString *)str {
    while ([str rangeOfString:@"  "].location != NSNotFound) {
        str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
    }
    return str;
}

Espérons que cela va vous aider.

Kamleshwar
la source