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

NFY 
/ACME CONSOLIDATORS" 

如何去除「PACKAGE」和「NFY」之間的空格?如何從字符串中刪除回車符

+0

這是我們的答案。 http://stackoverflow.com/questions/10171852/java-replaceall-doesnt-work-well-with-backslash –

回答

3

試試這個代碼:

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

+0這不足以對其他人有所幫助。 –

0

您已經嘗試了替換功能?東西的線路:

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

來吧,問題被標記爲'java'。你不能在'Java'中給出解決方案嗎? – Romain

+0

糟糕!嘿,但你仍然可以使用模式mather並替換字符串。 –

23

Java的String.replaceAll其實需要一個正則表達式。你可以刪除所有換行符用:

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

但是,這將刪除所有換行符

請注意雙重\的:所以傳遞給正則表達式分析器的字符串是\n

你也可以做到這一點,這是聰明的:

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

這將消除2個或多個空格的所有序列,用一個空格替換它們。由於換行符也是空格,它應該爲你做竅門。

+4

另外,'s.replaceAll(「(?:\\ n | \\ r)」,「」);'在單個語句中實現相同。人們可以調整表達式以使其更具選擇性。 – Romain

+0

您可以*始終*匹配其中有換行符的文本;你不需要一個標誌。 MULTILINE所做的就是改變錨點的含義,即'^'和'$',使它們能夠在行邊界以及整個字符串的開始和結尾進行匹配。由於您的正則表達式中沒有錨點,因此MULTILINE標誌不起作用。 –

+0

你是對的 - 剛剛嘗試過'Pattern.MULTILINE'註釋掉。但是(我最初嘗試過的)'s = s.replace(「\\ s {2,}」,「」);'不起作用。它不會刪除換行符。任何想法爲什麼? – craigmj