Supprimer les espaces de début et de fin de la chaîne Java

278

Existe-t-il une méthode pratique pour supprimer les espaces de début ou de fin d'une chaîne Java?

Quelque chose comme:

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

Résultat:

no spaces:keep this

myString.replace(" ","") remplacerait l'espace entre garder et cela.

Tyler DeWitt
la source
7
C'est malheureux, mais cela signifie que les réponses ici ont été utiles aux gens. J'ai voté pour cette raison seulement.
Alex D
11
Bien qu'il puisse s'agir d'un doublon, c'est de loin une question mieux présentée. Si quoi que ce soit, l'autre doit être proche en double de celui-ci.
thecoshman le
1
J'ai changé les doublons parce que ce Q&A a beaucoup plus de vues et de favoris, et l'autre Q&A est en fait une question de débogage.
Radiodef
1
A répondu avec la solution de l'API JDK / 11 - String.stripà cela.
Naman

Réponses:

601

Vous pouvez essayer la méthode trim ().

String newString = oldString.trim();

Jetez un œil aux javadocs

woliveirajr
la source
1
Fonctionne comme un remplacement rétrocompatible pour String.strip () de Java 11. Je n'ai pas eu le temps d'explorer les subtiles différences.
Josiah Yoder
80

Utilisez la String#trim()méthode ou String allRemoved = myString.replaceAll("^\\s+|\\s+$", "")pour couper les deux extrémités.

Pour la garniture gauche:

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

Pour garniture droite:

String rightRemoved = myString.replaceAll("\\s+$", "");
Prince John Wesley
la source
3
Cela a l'avantage supplémentaire de pouvoir indiquer le nombre d'espaces de début / fin dans la chaîne.
Błażej Czapp
18

trim () est votre choix, mais si vous souhaitez utiliser la replaceméthode - qui pourrait être plus flexible, vous pouvez essayer ce qui suit:

String stripppedString = myString.replaceAll("(^ )|( $)", "");
James.Xu
la source
que remplace-t-elle? Espaces et nouvelles lignes peut-être?
Someone Somewhere
Je cherchais une solution pour supprimer simplement les espaces de fin mais pas les espaces de début. J'ai utilisé: str.replaceAll ("\\ s * $", "") Merci!
lisa p.
4

Avec Java-11 et supérieur, vous pouvez utiliser l' String.stripAPI pour renvoyer une chaîne dont la valeur est cette chaîne, tous les espaces de début et de fin étant supprimés. Le javadoc pour le même lit:

/**
 * 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()

Les exemples de cas pour ceux-ci pourraient être: -

System.out.println("  leading".strip()); // prints "leading"
System.out.println("trailing  ".strip()); // prints "trailing"
System.out.println("  keep this  ".strip()); // prints "keep this"
Naman
la source
PS : Migration de la réponse ici basée sur les commentaires de - stackoverflow.com/questions/3796121/…
Naman
0

Pour couper un caractère spécifique, vous pouvez utiliser:

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

Ici, les espaces et les virgules seront supprimés au début et à la fin .

Galère
la source