Rimuovere i caratteri da NSString?


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

Voglio rimuovere gli spazi, quindi la nuova stringa sarebbe "ABCDEFG".

Risposte:


280

Potresti usare:

NSString *stringWithoutSpaces = [myString 
   stringByReplacingOccurrencesOfString:@" " withString:@""];

Si prega di formattare frammenti di codice in un carattere a spaziatura fissa per la leggibilità. Al momento distinguere la prima corda è un po 'complicato
Mike Abdullah

4
Nota che "occorrenze" è scritto con due r.

più 1 nella speranza di raggiungere 256. smh
Will Von Ullrich

Funziona SOLO se gli "spazi" hanno un valore ASCII corretto = 32 (% 20) caratteri. Per rimuovere TUTTI i possibili caratteri spazio bianco, utilizzare la soluzione di Jim Dovey di seguito.
Linasses

80

Se vuoi supportare più di uno spazio alla volta o supportare qualsiasi spazio bianco, puoi farlo:

NSString* noSpaces =
    [[myString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
                           componentsJoinedByString:@""];

5
È più utile per l'uso generale.
mxg

mi piace! Voglio rimuovere tutti i caratteri speciali in un numero di telefono e mantenere solo le cifre.
karim

molto più semplice: yourString = [yourString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
Daniel

3
Il taglio rimuove solo i caratteri corrispondenti quando si trovano all'inizio e alla fine della stringa, quindi "ABCDEF" diventerebbe A B C D E F.
Jim Dovey

11

Tratto da NSString

stringByReplacingOccurrencesOfString:withString:

Restituisce una nuova stringa in cui tutte le occorrenze di una stringa di destinazione nel ricevitore vengono sostituite da un'altra stringa data.

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

Parametri

bersaglio

The string to replace.

sostituzione

The string with which to replace target.

Valore di ritorno

Una nuova stringa in cui tutte le occorrenze di target nel ricevitore vengono sostituite dalla sostituzione.


11

Tutto sopra funzionerà bene. Ma il metodo giusto è questo:

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

Funzionerà come un metodo TRIM. Rimuoverà tutti gli spazi anteriori e posteriori.

Grazie


7
No, rimuove solo gli spazi all'inizio e alla fine della stringa, non gli spazi tra gli altri caratteri.
Jim Dovey

@JimDovey ho già menzionato questa cosa nel mio commento. # Funzionerà come un metodo TRIM. Rimuoverà tutti gli spazi davanti e dietro. #
Mitesh Khatri

2
@MiteshKhatri Sì, ma ancora non risolve il problema originale, che è quello di rimuovere tutti gli spazi vuoti dal centro della stringa, non solo gli spazi bianchi iniziali e finali.
Jim Dovey,

@JimDovey per rimuovere tutti gli spazi usa il codice seguente: MyStr = [MyStr stringByReplacingOccurrencesOfString: @ "" withString: @ ""];
Mitesh Khatri

1
Ciò rimuoverà comunque solo i caratteri di spazio ASCII; cose come spazi a larghezza zero, spazi unificatori Unicode, newline, feed modulo, tabulazioni, tabulazioni verticali e così via rimarranno ancora nella stringa. Da qui l'esistenza di [NSCharacterSet whitespaceCharacterSet]e [NSCharacterSet whitespaceAndNewlineCharacterSet].
Jim Dovey,

6

se la stringa è mutabile , puoi trasformarla in posizione utilizzando questo modulo:

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

questo è utile anche se desideri che il risultato sia un'istanza modificabile di una stringa di input:

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

3

Puoi provare questo

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

Spero che questo ti possa aiutare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.