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
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
provare questo codice:
s = s.replaceAll("PACKAGE\\s*NFY", "PACKAGE NFY");
0 Questo non è generalizzata abbastanza per essere utile agli altri. –
Hai provato una funzione di sostituzione? Qualcosa nelle linee di:
youString.Replace("\r", "")
string = string.replace(/\s{2,}/g, ' ');
Avanti, la domanda è taggata 'java'. Non puoi dare una soluzione in 'Java'? – Romain
Oops !!!. Ehi, ma puoi comunque usare il pattern mather e sostituire la stringa. –
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.
Inoltre, 's.replaceAll (" (?: \\ n | \\ r) "," ");' raggiunge lo stesso risultato in una singola istruzione. E si può personalizzare l'espressione per essere più selettivi. – Romain
È 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. –
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
Questa è la risposta corretta. http://stackoverflow.com/questions/10171852/java-replaceall-doesnt-work-well-with-backslash –