¿Cómo eliminar espacios en blanco duplicados (incluyendo pestañas, líneas nuevas, espacios, etc.) en una cadena usando Java?
java
string
whitespace
estúpido
fuente
fuente
\s+
pero ¿qué significa 2 barras invertidas \\?"\\"
representa la cadena que consiste en una barra invertida única. Entonces, para representarlo\s+
, escriba"\\s+"
.Puedes usar la expresión regular
y
reemplazarlo con
$1
.Código Java:
Si la entrada es como la
"foo\t\tbar "
obtendrá"foo\tbar "
,pero si la entrada es
"foo\t bar"
, permanecerá sin cambios porque no tiene ningún espacio en blanco consecutivo.Si trata todos los caracteres de espacio en blanco (espacio, tabulación vertical, tabulación horizontal, retorno de carro, avance de formulario, nueva línea) como espacio, puede usar la siguiente expresión regular para reemplazar cualquier cantidad de espacio en blanco consecutivo con un solo espacio:
Pero si desea reemplazar dos espacios en blanco consecutivos con un solo espacio, debe hacer:
fuente
Prueba esto: tienes que
import java.util.regex.*;
¿Dónde
string
está su cadena en la que necesita eliminar los espacios en blanco duplicados?fuente
hola la forma más rápida (pero no la más bonita) que encontré es
esto se está ejecutando bastante rápido en Android en lugar de una expresión regular
fuente
fuente
Aunque es demasiado tarde, he encontrado una mejor solución (que funciona para mí) que reemplazará todos los espacios en blanco consecutivos del mismo tipo con un espacio en blanco de su tipo. Es decir:
estarán
Observe que todavía hay espacios en blanco iniciales y finales. Entonces mi solución completa es:
Aquí,
trim()
reemplaza todas las cadenas de espacios en blanco iniciales y finales con "".(\\s)
es para capturar\\s
(es decir, espacios en blanco como '', '\ n', '\ t') en el grupo # 1 .+
signo es para hacer coincidir 1 o más token anterior. Por(\\s)+
lo tanto, pueden ser caracteres consecutivos (1 o más) entre cualquier carácter de espacio en blanco ('', '\ n' o '\ t').$1
es para reemplazar las cadenas coincidentes con la cadena del grupo n. ° 1 (que solo contiene 1 carácter de espacio en blanco) del tipo coincidente (es decir, el carácter de espacio en blanco único que coincide). La solución anterior cambiará así:estarán
No he encontrado mi solución anterior aquí, así que la he publicado.
fuente
Si desea deshacerse de todos los espacios en blanco extraños iniciales y finales, entonces desea hacer algo como esto:
Luego puede eliminar los duplicados utilizando las otras estrategias enumeradas aquí:
fuente
También puede intentar usar String Tokeniser, para cualquier espacio, pestaña, nueva línea y todo. Una manera simple es,
fuente
Esto puede ser posible en tres pasos:
fuente