¿Cómo eliminar los espacios en blanco duplicados (incluidas las pestañas, líneas nuevas, espacios, etc. ...) en una cadena utilizando Java?¿Cómo eliminar los espacios en blanco duplicados en cadena utilizando Java?
Respuesta
De esta manera:
yourString = yourString.replaceAll("\\s+", " ");
Por ejemplo
System.out.println("lorem ipsum dolor \n sit.".replaceAll("\\s+", " "));
salidas
lorem ipsum dolor sit.
¿Qué quiere decir que \s+
?
\s+
es una expresión regular. \s
coincide con un espacio, pestaña, nueva línea, retorno de carro, avance de página o pestaña vertical, y +
dice "uno o más de esos". Por lo tanto, el código anterior colapsará todas las "subcadenas de espacios en blanco" más largas que un carácter, con un solo carácter de espacio.
Prueba esto - Tienes que import java.util.regex.*;
Pattern pattern = Pattern.compile("\\s+");
Matcher matcher = pattern.matcher(string);
boolean check = matcher.find();
String str = matcher.replaceAll(" ");
Dónde string
es su cadena en la que es necesario eliminar los espacios en blanco duplicados
Usted puede utilizar la expresión regular
(\s)\1
y
sustituirlo por $1
.
código Java:
str = str.replaceAll("(\\s)\\1","$1");
Si la entrada es "foo\t\tbar "
obtendrá como salida "foo\tbar "
Pero si la entrada es "foo\t bar"
que se mantendrá sin cambios, ya que no tiene ningún espacios en blanco consecutivos.
Si usted trata a todos los caracteres de espacio en blanco (espacio, tabulador vertical, tabulador horizontal, retorno de carro, avance de hoja nueva línea) como el espacio, puede utilizar la siguiente expresión regular para reemplazar cualquier número de espacios en blanco consecutivos con una solo espacio:
str = str.replaceAll("\\s+"," ");
Pero si desea reemplazar dos espacios en blanco consecutivos con un solo espacio que debe hacer:
str = str.replaceAll("\\s{2}"," ");
Esto puede ser posible en tres pasos:
- Convertir la cadena en al arreglo de caracteres (ToCharArray)
- Aplicar para el bucle en la matriz de charater
- A continuación, aplicar cadena de la función replace (Reemplazar ("pican desea reemplazar", "cadena original"));
Esa no es una buena solución, cayendo a una matriz de caracteres no resuelve nada. En realidad, no está explicando cómo hacer el reemplazo, que es el núcleo del problema. También, por favor, ** no ** publique enlaces completamente no relacionados. Si lo haces, serás marcado como spammer. – Mat
Si desea deshacerse de todo espacio inicial y final extraña entonces usted quiere hacer algo como esto:
// \\A = Start of input boundary
// \\z = End of input boundary
string = string.replaceAll("\\A\\s+(.*?)\\s+\\z", "$1");
A continuación, puede eliminar los duplicados utilizando las otras estrategias mencionadas aquí:
string = string.replaceAll("\\s+"," ");
hola el (camino, pero no más bonita) más rápido que he encontrado es
while (cleantext.indexOf(" ") != -1)
cleantext = StringUtils.replace(cleantext, " ", " ");
esto se está ejecutando bastante rápido en Android en oposición a una expresión regular
Funciona solo para espacios pero no para otros espacios en blanco como pestañas y nuevas líneas. – Pang
Lo sé, tienes que agregar más de estos while loops para otras entidades. Pero este código se ejecuta mucho más rápido en Android que estos regex, tuve que procesar libros electrónicos completos. – wutzebaer
Enormemente más rápido en el escritorio también. No lo he probado para una cadena grande, pero si planeas ejecutarlo en muchas cuerdas pequeñas esta es la respuesta que estás buscando. – Ivelate
Aunque es demasiado tarde, he encontrado una mejor solución (que funciona para mí) que reemplazará todos los espacios blancos del mismo tipo consecutivos con un espacio en blanco de su tipo. Es decir:
Hello!\n\n\nMy World
habrá
Hello!\nMy World
Aviso todavía hay espacios iniciales y finales blancos. Así que mi solución completa es:
str = str.trim().replaceAll("(\\s)+", "$1"));
Aquí, trim()
sustituye a todas las cadenas de ataque y de salida de espacio en blanco con "". (\\s)
es para capturar \\s
(es decir, espacios en blanco como '', '\ n', '\ t') en grupo # 1. El signo +
es para hacer coincidir 1 o más token anterior. Por lo tanto, (\\s)+
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 el cadena # 1 cadena (que solo contiene 1 carácter de espacio en blanco) del tipo coincidente (que es el único carácter de espacio en blanco que ha coincidido). La solución anterior cambiará así:
Hello!\n\n\nMy World
habrá
Hello!\nMy World
no he encontrado mi solución anterior aquí, así que he fijado él.
También puede intentar usar String Tokeniser, para cualquier espacio, pestaña, nueva línea y todo. Una forma sencilla es,
String s = "Your Text Here";
StringTokenizer st = new StringTokenizer(s, " ");
while(st.hasMoreTokens())
{
System.out.print(st.nextToken());
}
String str = " Text with multiple spaces ";
str = org.apache.commons.lang3.StringUtils.normalizeSpace(str);
// str = "Text with multiple spaces"
- 1. Eliminar espacios en blanco en cadena XML
- 2. Eliminar los espacios en blanco en AS3
- 3. Cómo eliminar los espacios en blanco entre etiquetas en XML
- 4. Eliminar todos los espacios en blanco y las líneas vacías
- 5. Cómo eliminar el exceso de espacios en blanco en cadena utilizando Regex
- 6. Recorte de espacios en blanco de una cadena en Java
- 7. Eliminar espacios en blanco dentro de una cadena en javascript
- 8. Oracle: cómo eliminar espacios en blanco?
- 9. ¿Cómo eliminar elementos con espacios en blanco?
- 10. Espacios en blanco en Java
- 11. Eliminar espacios en blanco dentro de la cadena
- 12. expresión XPath para eliminar los espacios en blanco
- 13. untabify y eliminar los espacios en blanco finales en emacs
- 14. División de una cadena en todos los espacios en blanco
- 15. Eliminar todos los espacios en blanco de un archivo: Linux
- 16. Separar una cadena por espacios en blanco en C++
- 17. ¿Cómo eliminar todos los espacios en blanco desde el inicio o el final de una cadena?
- 18. colapso de los espacios en blanco en una cadena
- 19. Cómo recortar espacios en blanco entre caracteres
- 20. eliminar los espacios en blanco de cada matriz rieles artículo
- 21. ¿Cómo recortar correctamente los espacios en blanco de una cadena en Java?
- 22. ¿Cómo identificar y eliminar líneas nuevas y espacios en blanco?
- 23. Eliminar los espacios en blanco de la cadena en Objective-C
- 24. Ruby reducir todos los espacios en blanco a espacios individuales
- 25. Eliminar espacios de una cadena
- 26. vim: eliminar todos los espacios en blanco hasta el próximo carácter no en blanco
- 27. Cómo eliminar los espacios en blanco al final en el complemento PyDev para Eclipse
- 28. ¿Cómo creo una cadena de espacios en blanco en C++?
- 29. ¿Cómo eliminar espacios en blanco adicionales usando javascript o jquery?
- 30. Eliminar duplicados de una matriz de enteros grandes utilizando Java
por qué no existe un método replaceAll ?? ¿El último JDK admite este método? –
@SuhrobSamiev - String.replaceAll() ha estado en Java desde JDK 1.4. http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#replaceAll(java.lang.String, java.lang.String) –
Ojalá pudiera agregar más de +1 para la increíble explicación de \ s +. – Cyntech