2011-06-05 59 views
12

應該很簡單,但我會爲它瘋狂。Java正則表達式:newline +空格

給予相同的文字:

line number 1 
line number 2 
line number 2A 
line number 3 
line number 3A 
line number 3B 
line number 4 

我需要Java正則表達式是刪除行終止,則新行的空間展開,於是,上面的示例文本變成:

line number 1 
line number 2line number 2A 
line number 3line number 3Aline number 3B 
line number 4 
+1

嘗試'' 「\ r \ n \ W +?」。我沒有嘗試過,所以我不想將它註冊爲答案。如果你還沒有檢查出來,你可以在這裏找到關於Java正則表達式的一些細節:http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html .. 。如果你保證「行」是給定行中的第一個文本,你也可以嘗試'「\ r?\ n [^ l] +」'。 – 2011-06-05 16:59:23

+0

@Mike M:無法在Apple的操作系統上工作 – 2011-06-05 17:04:22

+0

雖然應該可以在OS-X上工作,對吧?人們仍在使用舊版本的蘋果嗎? – 2011-06-05 18:28:15

回答

11

yourString.replaceAll("\n ", " ");這不會幫助嗎?

+3

1)問題說:_如果遇到以開頭的行,請刪除空行和新行。 2)'\ n'不是便攜式 – 2011-06-05 17:00:42

+0

這個就夠了。非常感謝 – MatteoSp 2011-06-05 17:30:09

+3

@MatteoSp,記住stings是不可變的,所以實際上你需要'yourString = yourString.replaceAll(「\ n」,「」);'或者類似的東西,因爲調用方法不會永久地改變String對象本身。很高興幫助:) – dantuch 2011-06-05 17:34:05

2

"\n "這是應該做的伎倆,如果你在Unix LF模式。對於DOS,您需要匹配CRLF "\r\n "。檢查與RegexBuddy看起來很好。

3

也許使它跨平臺:

String pattern = System.getProperty("line.separator") + " "; 
string.replaceAll(pattern, ""); 
+7

那麼,系統'line.separator'並沒有真正的幫助,因爲你不知道這些文件是否在運行JVM的系統上創建 – 2011-06-05 17:46:42

8
String res = orig.replaceAll("[\\r\\n]+\\s", "");