Spogliare gli spazi iniziali e finali dalla stringa Java


278

Esiste un metodo pratico per rimuovere eventuali spazi iniziali o finali da una stringa Java?

Qualcosa di simile a:

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

Risultato:

no spaces:keep this

myString.replace(" ","") sostituirà lo spazio tra keep e this.


7
È sfortunato, ma significa che le risposte qui sono state utili alle persone. Ho votato solo per quel motivo.
Alex D

11
Mentre questo può essere un duplicato, questa è di gran lunga una domanda meglio presentata. Semmai, l'altro dovrebbe essere vicino come un duplicato di questo.
signore

1
Ho scambiato i duplicati perché questa domanda e risposta ha molte più visualizzazioni e preferiti, e l'altra domanda è in realtà una domanda di debug.
Radiodef,

1
Realizzata una risposta con la soluzione da JDK / 11 API - String.stripa questo.
Naman,

Risposte:


601

Puoi provare il metodo trim ().

String newString = oldString.trim();

Dai un'occhiata a javadocs


1
Funziona come un sostituto compatibile con le versioni precedenti di String.strip () di Java 11. Non ho avuto il tempo di esplorare le sottili differenze.
Josiah Yoder

80

Utilizzare il String#trim()metodo o String allRemoved = myString.replaceAll("^\\s+|\\s+$", "")per tagliare entrambe le estremità.

Per il rivestimento sinistro:

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

Per il rivestimento giusto:

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

3
Questo ha l'ulteriore vantaggio di poter dire quanti spazi iniziali / finali ci sono nella stringa.
Błażej Czapp,


18

trim () è la tua scelta, ma se vuoi usare il replacemetodo - che potrebbe essere più flessibile, puoi provare quanto segue:

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

cosa sostituisce tutto? Spazi e newline forse?
Someone Somewhere

Stavo cercando una soluzione per rimuovere solo gli spazi finali ma non gli spazi iniziali. Ho usato: str.replaceAll ("\\ s * $", "") Grazie!
Lisa p.

4

Con Java-11 e versioni successive, è possibile utilizzare l' String.stripAPI per restituire una stringa il cui valore è questa stringa, con tutti gli spazi iniziali e finali rimossi. Il javadoc per lo stesso recita:

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

I casi di esempio per questi potrebbero essere: -

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

PS : migrazione della risposta qui in base ai commenti di - stackoverflow.com/questions/3796121/…
Naman


0

Per tagliare caratteri specifici, puoi usare:

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

Qui rimuoverà lo spazio e la virgola iniziali e finali .

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.