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
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
Spróbuj kod:
s = s.replaceAll("PACKAGE\\s*NFY", "PACKAGE NFY");
+0 To nie jest wystarczająco uogólnione, aby być pomocnym dla innych. –
próbowałeś funkcję zastąpić? Coś w linii:
youString.Replace("\r", "")
string = string.replace(/\s{2,}/g, ' ');
Dalej pytanie zostaje oznaczone jako 'java'. Nie możesz podać rozwiązania w 'Java'? – Romain
Ups !!!. Hej, ale nadal możesz użyć wzoru mather i zastąp ciąg. –
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ć.
Ponadto, 's.replaceAll (" (?: \\ n | \\ r) "," ");' uzyskuje to samo w pojedynczej instrukcji. I można dostosować ekspresję, aby była bardziej selektywna. – Romain
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. –
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
To jest odpowiedź Corrent. http://stackoverflow.com/questions/10171852/java-replaceall-doesnt-work-well-with-backslash –