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

NFY 
/ACME CONSOLIDATORS" 

Jak usunąć spację między "PAKIETEM" a "NFY"?Jak usunąć powrót karetki z ciągu znaków

+0

To jest odpowiedź Corrent. http://stackoverflow.com/questions/10171852/java-replaceall-doesnt-work-well-with-backslash –

Odpowiedz

3

Spróbuj kod:

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

+0 To nie jest wystarczająco uogólnione, aby być pomocnym dla innych. –

0

próbowałeś funkcję zastąpić? Coś w linii:

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

Dalej pytanie zostaje oznaczone jako 'java'. Nie możesz podać rozwiązania w 'Java'? – Romain

+0

Ups !!!. Hej, ale nadal możesz użyć wzoru mather i zastąp ciąg. –

23

Java String.replaceAll w rzeczywistości trwa wyrażenia regularnego. Można usunąć wszystkie znaki nowej linii z:

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

Ale to usunie wszystkie nowe linie.

Należy zwrócić uwagę na podwójne: \: ciąg znaków przekazywany do analizatora wyrażeń regularnych to \n.

Można również ten, który jest mądrzejszy zrobić:

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

To byłoby usunąć wszystkie sekwencje 2 lub więcej białych znaków, zastępując je pojedynczym odstępem. Ponieważ znaki nowej linii są również białymi znakami, powinno to wystarczyć.

+4

Ponadto, 's.replaceAll (" (?: \\ n | \\ r) "," ");' uzyskuje to samo w pojedynczej instrukcji. I można dostosować ekspresję, aby była bardziej selektywna. – Romain

+0

Możesz * zawsze * dopasować tekst, który zawiera znaki nowej linii; nie potrzebujesz do tego flagi. Tym, co robi MULTILINE, jest zmiana znaczenia kotwic, '^' i '$', pozwalając im dopasować się do granic linii, jak również do początku i końca całego łańcucha. Ponieważ w twoim regex nie ma kotwic, flaga MULTILINE nie ma żadnego efektu. –

+0

Masz rację - po prostu wypróbowałeś to, skomentowałeś "Pattern.MULTILINE". Ale (co wcześniej próbowałem) 's = s.replace (" \\ s {2,} "," ");' nie działa. Nie usuwa nowych znaków. Każdy pomysł, dlaczego? – craigmj

Powiązane problemy