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 solo elimina espacios en blanco antes y después de toda la cadena. También lo intenté replaceAll("\\W", "")
pero luego =
también se eliminó.
¿Cómo puedo lograr una cadena con:
mysz2 = "name=johnage=13year=2001"
java
whitespace
zyamat
fuente
fuente
\\W
significa todas las no palabras ver download.oracle.com/javase/6/docs/api/java/util/regex/…Respuestas:
st.replaceAll("\\s+","")
elimina todos los espacios en blanco y los caracteres no visibles (p. ej., tabulación\n
).st.replaceAll("\\s+","")
yst.replaceAll("\\s","")
produce 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.
Asigne el valor a una variable, si no se usa directamente:
fuente
\w
= Cualquier cosa que sea un carácter de palabra\W
= Cualquier cosa que no sea un carácter de palabra (incluyendo puntuación, etc.)\s
= Cualquier cosa que sea un carácter de espacio (incluidos espacios, caracteres de tabulación, etc.)\S
= Cualquier cosa que no sea un espacio (incluyendo letras y números, así como puntuación, etc.)(Editar: como se señaló, debe escapar de la barra diagonal inversa si desea
\s
llegar al motor de expresiones regulares, lo que da como resultado\\s
).fuente
La respuesta más correcta a la pregunta es:
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 implican.
(Los desarrolladores experimentados de Java podrían decir "por supuesto, no se puede modificar una Cadena", pero el público objetivo de esta pregunta puede no saberlo).
fuente
S
pero no sobrescribe la cadena queS
apunta.¿Qué tal
replaceAll("\\s", "")
. Consulte aquí .fuente
Una forma de manejar las manipulaciones de String es StringUtils de Apache commons.
Lo puedes encontrar aquí . commons-lang incluye mucho más y está bien soportado.
fuente
Si necesita eliminar espacios irrompibles también, puede actualizar su código de esta manera:
fuente
" ab c "
Si prefiere las clases de utilidad a expresiones regulares, hay un método trimAllWhitespace (String) en StringUtils en Spring Framework.
fuente
Ya has recibido la respuesta correcta de Gursel Koca, pero creo que hay muchas posibilidades de que esto no sea lo que realmente quieres hacer. ¿Qué tal analizar los valores-clave en su lugar?
fuente
Deberías usar
en vez de:
De esta manera, funcionará con más de un espacio entre cada cadena. El signo + en la expresión regular anterior significa "uno o más \ s"
fuente
replaceAll
repita hasta que el patrón no coincida con ninguna parte de la cadena.+
puede hacerlo marginalmente más amigable con la CPU, porque los espacios en blanco consecutivos se manejan en una sola operación de reemplazo, pero esa es la única diferencia en este caso. De hecho, es elAll
, no el+
que reemplaza el espacio en blanco no consecutivo en la cadena.La forma más fácil de hacer esto es usar la
org.apache.commons.lang3.StringUtils
clase decommons-lang3
biblioteca como "commons-lang3-3.1.jar
" por ejemplo.Use el método estático "
StringUtils.deleteWhitespace(String str)
" en su cadena de entrada y le devolverá una cadena después de eliminar todos los espacios en blanco. Probé su cadena de ejemplo "name=john age=13 year=2001
" y me devolvió exactamente la cadena que deseaba - "name=johnage=13year=2001
". Espero que esto ayude.fuente
Puedes hacerlo tan simplemente
fuente
fuente
// funciona bien con cualquier espacio * no olvides el espacio en la picadura b
fuente
\W
significa "carácter no verbal". El patrón para los espacios en blanco es\s
. Esto está bien documentado en el Patrón javadoc .fuente
En java podemos hacer la siguiente operación:
para esto necesita importar los siguientes paquetes a su programa:
Espero que te ayude.
fuente
Usando Pattern And Matcher es más dinámico.
fuente
Utilizar
mysz.replaceAll("\\s+","");
fuente
Usar apache string util class es mejor para evitar NullPointerException
Salida
fuente
Cuando lo use
st.replaceAll("\\s+","")
en Kotlin , asegúrese de envolverlo"\\s+"
con Regex :fuente
Primero con espacio, segundo sin espacio.
Entonces ya está hecho.
fuente
[ \t\n\x0B\f\r]
. Solo estás haciendo[ ]
espacios normales .fuente
Hay muchas formas de resolver este problema. puede usar la función dividida o reemplazar la función de cadenas.
para obtener más información, consulte el problema smilliar http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
fuente
Para eliminar espacios en su ejemplo, esta es otra forma de hacerlo:
Lo que hace es convertirlo en una matriz con los espacios como separadores, y luego combina los elementos de la matriz sin los espacios.
Funciona bastante bien y es fácil de entender.
fuente
Hay otros caracteres espaciales que también existen en cadenas. Por lo tanto, es posible que debamos reemplazar los caracteres espaciales de las cadenas.
Ej: ESPACIO SIN INTERRUPCIONES, ESPACIO TRES POR EM, ESPACIO DE PUNTUACIÓN
Aquí está la lista de espacio char http://jkorpela.fi/chars/spaces.html
Entonces necesitamos modificar
\ u2004 nosotros por ESPACIO TRES POR EM
s.replaceAll ("[\ u0020 \ u2004]", "")
fuente
El espacio en blanco se puede eliminar usando la función isWhitespace de la clase de caracteres.
fuente
Separe cada grupo de texto en su propia subcadena y luego concatene esas subcadenas:
fuente
Esto puede ayudar.
fuente
También puede echar un vistazo al siguiente código de Java. Los siguientes códigos no utilizan ningún método "incorporado".
Entrada:
Salida:
fuente
fuente
Se proporcionan muchas respuestas. Me gustaría dar una solución que sea bastante legible y mejor que regex.
fuente