Elimine los espacios iniciales y finales de la cadena Java

278

¿Existe un método conveniente para eliminar los espacios iniciales o finales de una Cadena Java?

Algo como:

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

Resultado:

no spaces:keep this

myString.replace(" ","") reemplazaría el espacio entre keep y this.

Tyler DeWitt
fuente
77
Es lamentable, pero significa que las respuestas aquí fueron útiles para las personas. Voté por esa razón solamente.
Alex D
11
Si bien esto puede ser un duplicado, esta es una pregunta mucho mejor presentada. En todo caso, el otro debe estar cerca como un duplicado de este.
thecoshman
1
Cambié los duplicados porque este Q&A tiene muchas más vistas y favoritos, y el otro Q&A es en realidad una pregunta de depuración.
Radiodef
1
Respondió con la solución de JDK / 11 API - String.stripa esto.
Naman

Respuestas:

601

Puedes probar el método trim ().

String newString = oldString.trim();

Echa un vistazo a javadocs

woliveirajr
fuente
1
Funciona como un reemplazo compatible con versiones anteriores de String.strip () de Java 11. No he tenido tiempo de explorar las sutiles diferencias.
Josiah Yoder
80

Utilice el String#trim()método oString allRemoved = myString.replaceAll("^\\s+|\\s+$", "") para recortar tanto el final.

Para el borde izquierdo:

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

Para el ajuste correcto:

String rightRemoved = myString.replaceAll("\\s+$", "");
Príncipe John Wesley
fuente
3
Esto tiene el beneficio adicional de poder saber cuántos espacios iniciales / finales hay en la cadena.
Błażej Czapp
18

trim () es su elección, pero si desea utilizar el replacemétodo, que podría ser más flexible, puede intentar lo siguiente:

String stripppedString = myString.replaceAll("(^ )|( $)", "");
James.Xu
fuente
¿Qué reemplaza todo? ¿Espacios y nuevas líneas tal vez?
Alguien en algún lugar
Estaba buscando una solución para eliminar los espacios finales pero no los espacios iniciales. Solía: str.replaceAll ("\\ s * $", "") ¡Gracias!
lisa p.
4

Con Java-11 y superior, puede hacer uso de la String.stripAPI para devolver una cadena cuyo valor es esta cadena, con todos los espacios en blanco iniciales y finales eliminados. El javadoc para las mismas lecturas:

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

Los casos de muestra para estos podrían ser: -

System.out.println("  leading".strip()); // prints "leading"
System.out.println("trailing  ".strip()); // prints "trailing"
System.out.println("  keep this  ".strip()); // prints "keep this"
Naman
fuente
PD : Migrar la respuesta aquí en función de los comentarios de stackoverflow.com/questions/3796121/…
Naman
0

Para recortar caracteres específicos, puede usar:

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

Aquí se eliminarán comas y espacios iniciales y finales .

Galera
fuente