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.