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

NFY 
/ACME CONSOLIDATORS" 

Come rimuovere lo spazio tra "PACCHETTO" e "NFY"?Come rimuovere un ritorno a capo da una stringa

+0

Questa è la risposta corretta. http://stackoverflow.com/questions/10171852/java-replaceall-doesnt-work-well-with-backslash –

risposta

3

provare questo codice:

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

0 Questo non è generalizzata abbastanza per essere utile agli altri. –

0

Hai provato una funzione di sostituzione? Qualcosa nelle linee di:

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

Avanti, la domanda è taggata 'java'. Non puoi dare una soluzione in 'Java'? – Romain

+0

Oops !!!. Ehi, ma puoi comunque usare il pattern mather e sostituire la stringa. –

23

di String.replaceAll infatti Java prende un'espressione regolare. Si potrebbe rimuovere tutte le nuove righe con:

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

Ma questo verrà rimosso tutti ritorni a capo.

Nota il doppio \: in modo che la stringa passata al parser di espressioni regolari sia \n.

È anche possibile fare questo, che è più intelligente:

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

Questo eliminerebbe tutte le sequenze di 2 o più spazi bianchi, la loro sostituzione con un singolo spazio. Dal momento che i newline sono anche degli spazi bianchi, dovrebbe fare il trucco per te.

+4

Inoltre, 's.replaceAll (" (?: \\ n | \\ r) "," ");' raggiunge lo stesso risultato in una singola istruzione. E si può personalizzare l'espressione per essere più selettivi. – Romain

+0

È possibile * sempre * abbinare il testo che contiene una nuova riga; non hai bisogno di una bandiera per quello. Quello che fa MULTILINE è cambiare il significato delle ancore, '^' e '$', permettendo loro di abbinare ai limiti delle linee, nonché l'inizio e la fine dell'intera stringa. Poiché non ci sono ancore nella tua espressione regolare, il flag MULTILINE non ha alcun effetto. –

+0

Hai ragione - l'ho appena provato con 'Pattern.MULTILINE' commentato. Ma (quello che avevo provato in origine) 's = s.replace (" \\ s {2,} "," ");' non funziona. Non rimuove le newline. Qualche idea del perché? – craigmj

Problemi correlati