Pregunta Eliminar espacios en blanco de cadenas en Java


Tengo una cadena como esta:

mysz = "name=john age=13 year=2001";

Quiero eliminar los espacios en blanco en la cadena. Lo intenté trim() pero esto elimina solo espacios en blanco antes y después de toda la cadena. También intenté replaceAll("\\W", "") pero luego el = también se elimina.

¿Cómo puedo lograr una cadena con:

mysz2 = "name=johnage=13year=2001"

576
2018-03-28 07:22


origen


Respuestas:


st.replaceAll("\\s+","") elimina todos los espacios en blanco y los caracteres no visibles (por ejemplo, pestaña, \n)


st.replaceAll("\\s+","") y st.replaceAll("\\s","") producir el mismo resultado

La segunda expresión regular es un 20% más rápida que la primera, pero a medida que aumenta el número de espacios consecutivos, la primera funciona mejor que la segunda.


Asigna el valor a una variable, si no se usa directamente:

st = st.replaceAll("\\s+","")

1138
2018-03-28 07:24



replaceAll("\\s","")

\w = Cualquier cosa que sea un personaje de palabra

\W = Cualquier cosa que no sea un personaje de palabra (incluyendo puntuación, etc.)

\s = Cualquier cosa que sea un carácter de espacio (incluyendo espacio, caracteres de tabulación, etc.)

\S = Cualquier cosa que no sea un carácter espacial (incluyendo letras y números, así como puntuación, etc.)

(Editar: Como se señaló, necesita escapar de la barra invertida si lo desea \s para alcanzar el motor de expresiones regulares, lo que resulta en \\s.)


219
2018-03-28 07:26



La respuesta más correcta a la pregunta es:

String mysz2 = mysz.replaceAll("\\s","");

Acabo de adaptar este código de las otras respuestas. Lo estoy publicando porque además de ser exactamente lo que solicitó la pregunta, también demuestra que el resultado se devuelve como una nueva cadena, la cadena original no se modifica como algunas de las respuestas parecen implicar.

(Los desarrolladores experimentados de Java podrían decir "por supuesto, no se puede modificar una cadena", pero es posible que el público objetivo de esta pregunta no lo sepa).


93
2018-04-16 10:47



Qué tal si replaceAll("\\s", ""). Referir aquí.


55
2018-03-28 07:25



Si necesita eliminar espacios irrompibles también, puede actualizar su código de esta manera:

st.replaceAll("[\\s|\\u00A0]+", "");

27
2017-11-14 14:13



Si prefiere las clases de utilidad a las expresiones regulares, existe un método trimAllWhitespace (String) en StringUtils en Spring Framework.


26
2018-01-25 11:51



Una forma de manejar las manipulaciones de cadenas es StringUtils de Apache commons.

String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);

Puedes encontrarlo aquí. commons-lang incluye mucho más y está bien soportado.


26
2017-07-20 17:34