Remover caracteres de NSString?


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

Quero remover os espaços, então a nova string seria "ABCDEFG".

Respostas:


280

Você pode usar:

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

Você pode formatar trechos de código em uma fonte monoespaçada para legibilidade. No momento, distinguir a primeira corda é um pouco complicado
Mike Abdullah

4
Observe que "ocorrências" é escrito com dois r's.

mais 1 na esperança de chegar a 256. smh
Will Von Ullrich

Isso SÓ funciona se os 'espaços' forem um valor ASCII bem comportado = 32 (% 20) caracteres. Para remover TODOS os caracteres de espaço em branco possíveis, use a solução de Jim Dovey abaixo.
Linasses

80

Se você deseja oferecer suporte a mais de um espaço por vez, ou qualquer espaço em branco, você pode fazer o seguinte:

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

5
É mais útil para uso geral.
mxg

eu gosto disso! Quero remover todos os caracteres especiais em um número de telefone e manter apenas os dígitos.
karim

muito mais fácil: yourString = [yourString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
Daniel

3
Trimming apenas remove os caracteres correspondentes quando eles ocorrem no início e no final da string, então `ABCDEF` se tornaria A B C D E F.
Jim Dovey

11

Retirado de NSString

stringByReplacingOccurrencesOfString:withString:

Retorna uma nova string na qual todas as ocorrências de uma string de destino no receptor são substituídas por outra string fornecida.

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

Parâmetros

alvo

The string to replace.

substituição

The string with which to replace target.

Valor de retorno

Uma nova string na qual todas as ocorrências de alvo no receptor são substituídas por substituição.


11

Tudo acima vai funcionar bem. Mas o método certo é este:

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

Funcionará como um método TRIM. Isso removerá todos os espaços da frente e de trás.

obrigado


7
Não, ele remove apenas os espaços do início e do final da string, não os espaços entre outros caracteres.
Jim Dovey

@JimDovey eu já mencionei isso no meu comentário. # Funcionará como um método TRIM. Isso removerá todos os espaços da frente e de trás. #
Mitesh Khatri de

2
@MiteshKhatri Sim, mas ainda não resolve o problema original, que é remover todos os espaços em branco do meio da string, não apenas os espaços em branco à esquerda e à direita.
Jim Dovey

@JimDovey para remover todos os espaços, use o código abaixo: MyStr = [MyStr stringByReplacingOccurrencesOfString: @ "" withString: @ ""];
Mitesh Khatri

1
Isso ainda removerá apenas caracteres de espaço ASCII; coisas como espaços de largura zero, espaços sem quebra Unicode, novas linhas, feeds de formulário, tabs, tabs verticais e assim por diante ainda permanecerão na string. Daí a existência de [NSCharacterSet whitespaceCharacterSet]e [NSCharacterSet whitespaceAndNewlineCharacterSet].
Jim Dovey

6

se a string for mutável , você pode transformá-la no lugar usando este formulário:

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

isso também é útil se você quiser que o resultado seja uma instância mutável de uma string de entrada:

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

3

Você pode tentar isso

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

Espero que isso ajude você.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.