Remover espaços à esquerda e à direita da sequência Java


278

Existe um método de conveniência para remover quaisquer espaços iniciais ou finais de uma String Java?

Algo como:

String myString = "  keep this  ";
String stripppedString = myString.strip();
System.out.println("no spaces:" + strippedString);

Resultado:

no spaces:keep this

myString.replace(" ","") substituiria o espaço entre keep e this.


7
É lamentável, mas significa que as respostas aqui foram úteis para as pessoas. Eu votei apenas por esse motivo.
Alex D

11
Embora isso possa ser uma duplicata, essa é de longe uma questão melhor apresentada. Se alguma coisa, a outra deve estar próxima como uma duplicata desta.
thecoshman

1
Troquei as duplicatas porque essas perguntas e respostas têm muito mais visualizações e favoritos, e as outras perguntas e respostas são na verdade uma pergunta de depuração.
Radiodef 23/07/19

1
Respondeu a solução da API JDK / 11 - String.strippara isso.
Naman

Respostas:


601

Você pode tentar o método trim ().

String newString = oldString.trim();

Dê uma olhada em javadocs


1
Funciona como um substituto compatível com versões anteriores do String.strip () do Java 11. Não tive tempo de explorar as diferenças sutis.
Josiah Yoder

80

Use o String#trim()método ou String allRemoved = myString.replaceAll("^\\s+|\\s+$", "")para aparar o final.

Para guarnição esquerda:

String leftRemoved = myString.replaceAll("^\\s+", "");

Para aparar à direita:

String rightRemoved = myString.replaceAll("\\s+$", "");

3
Isso tem o benefício adicional de poder dizer quantos espaços iniciais / finais existem na cadeia de caracteres.
Błażej Czapp 14/02


18

trim () é sua escolha, mas se você quiser usar o replacemétodo - que pode ser mais flexível, tente o seguinte:

String stripppedString = myString.replaceAll("(^ )|( $)", "");

o que tudo isso substitui? Espaços e novas linhas, talvez?
Alguém em algum lugar

Eu estava procurando uma solução para remover apenas espaços à direita, mas não espaços à esquerda. Eu usei: str.replaceAll ("\\ s * $", "") Obrigado!
lisa p.

4

Com o Java-11 e superior, é possível usar a String.stripAPI para retornar uma sequência cujo valor é essa sequência, com todo o espaço em branco inicial e final removido. O javadoc para o mesmo lê:

/**
 * Returns a string whose value is this string, with all leading
 * and trailing {@link Character#isWhitespace(int) white space}
 * removed.
 * <p>
 * If this {@code String} object represents an empty string,
 * or if all code points in this string are
 * {@link Character#isWhitespace(int) white space}, then an empty string
 * is returned.
 * <p>
 * Otherwise, returns a substring of this string beginning with the first
 * code point that is not a {@link Character#isWhitespace(int) white space}
 * up to and including the last code point that is not a
 * {@link Character#isWhitespace(int) white space}.
 * <p>
 * This method may be used to strip
 * {@link Character#isWhitespace(int) white space} from
 * the beginning and end of a string.
 *
 * @return  a string whose value is this string, with all leading
 *          and trailing white space removed
 *
 * @see Character#isWhitespace(int)
 *
 * @since 11
 */
public String strip()

Os casos de amostra para estes podem ser: -

System.out.println("  leading".strip()); // prints "leading"
System.out.println("trailing  ".strip()); // prints "trailing"
System.out.println("  keep this  ".strip()); // prints "keep this"

PS : Migrando a resposta aqui com base nos comentários de - stackoverflow.com/questions/3796121/…
Naman


0

Para aparar caracteres específicos, você pode usar:

String s = s.replaceAll("^(,|\\s)*|(,|\\s)*$", "")

Aqui, tira o espaço e a vírgula à esquerda e à direita .

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.