2012-05-08 18 views
5
String s ="SSR/DANGEROUS GOODS AS PER ATTACHED SHIPPERS 
/DECLARATION 1 PACKAGE 

NFY 
/ACME CONSOLIDATORS" 

¿Cómo eliminar el espacio entre "PAQUETE" y "NFY"?Cómo eliminar un retorno de carro de una cadena

+0

Esta es la respuesta corrent. http://stackoverflow.com/questions/10171852/java-replaceall-doesnt-work-well-with-backlash –

Respuesta

3

probar este código:

s = s.replaceAll("PACKAGE\\s*NFY", "PACKAGE NFY"); 
+1

+0 Esto no es lo suficientemente generalizado como para ser útil a los demás. –

0

¿Ha intentado sustituir una función? Algo en la línea de:

youString.Replace("\r", "") 
-1
string = string.replace(/\s{2,}/g, ' '); 
+1

Vamos, la pregunta está etiquetada 'java'. ¿No puedes dar una solución en 'Java'? – Romain

+0

¡Uy! Oye, pero aún puedes usar patrón mather y reemplazar la cadena. –

23

de String.replaceAll, de hecho, Java toma una expresión regular. Se podría eliminar todos los saltos de línea con:

s = s.replaceAll("\\n", ""); 
s = s.replaceAll("\\r", ""); 

Pero esto eliminará todos los nuevas líneas.

Tenga en cuenta el doble \ 's: por lo que la cadena que se pasa al analizador de expresiones regulares es \n.

También puede hacer esto, lo que es más inteligente:

s = s.replaceAll("\\s{2,}", " "); 

Esto eliminaría todas las secuencias de 2 o más espacios en blanco, sustituyéndolos por un único espacio. Como las nuevas líneas también son espacios en blanco, debería ser el truco para usted.

+4

Además, 's.replaceAll (" (?: \\ n | \\ r) "," ");' logra lo mismo en una sola declaración. Y uno puede adaptar la expresión para ser más selectivo. – Romain

+0

Puede * siempre * hacer coincidir texto que tenga nuevas líneas en él; no necesitas una bandera para eso. Lo que hace MULTILINE es cambiar el significado de los anclajes, '^' y '$', lo que les permite coincidir en los límites de la línea, así como en el principio y el final de toda la cadena. Como no hay anclajes en su expresión regular, la bandera MULTILINE no tiene ningún efecto. –

+0

Tienes razón, acabo de probarlo con el 'Pattern.MULTILINE' comentado. Pero (lo que probé originalmente) 's = s.replace (" \\ s {2,} "," ");' no funciona. No elimina las nuevas líneas. ¿Alguna idea de por qué? – craigmj

Cuestiones relacionadas