2010-12-16 81 views
4

的換行符號\ n爲害我有點麻煩,當我嘗試檢測和更換: 這工作得很好:的Java的replaceAll與換行符號

String x = "Bob was a bob \\n"; 
String y = x.replaceAll("was", "bob"); 
System.out.println(y); 

屁股上面的代碼沒有得到期望的結果

String x = "Bob was a bob \\n"; 
String y = x.replaceAll("\n", "bob"); 
System.out.println(y); 

回答

8

"Bob was a bob \\n"成爲字面上Bob was a bob \n

沒有新行中輸入字符串替換。您是否試圖替換換行符或轉義序列\\n

+0

我試圖用另一個字符串替換新行,例如「A B \ n C」會變成「A B Y C」 – Kay 2010-12-16 01:47:12

+3

正如我所說,輸入字符串中沒有換行符。 – 2010-12-16 01:52:43

+4

您的輸入字符串中沒有換行符。它有一個反斜槓後跟一個字母n。同時,你的regex沒有換行換行符。它有一個實際的換行符。 – 2010-12-16 01:54:27

0

您是否嘗試過這個?:

x.replaceAll("\\n", "bob"); 

你應該逃避新加入在使用它替換函數之前使用它。

+0

這可不好用。 – Kay 2010-12-16 01:46:45

+0

在正則表達式字符串中,您可以使用'\ n'或'\\ n'。在Java編譯器完成之後,正則表達式編譯器將在第一種情況下看到實際的換行符,或者在第二種情況下看到轉義序列反斜槓'n'。無論哪種方式它都會匹配換行符。正如其他人指出的那樣,它是目標字符串中的反斜線 - 'n',這是錯誤的。 – 2010-12-16 06:50:36

0

您的輸入字符串不包含新行。相反,它包含「\ n」。請參閱下面更正的輸入字符串。

String x = "Bob was a bob \n"; 
String y = x.replaceAll("\n", "bob"); 
System.out.println(y); 
3

這個按預期工作。

String str = "A B \n C"; 
String newStr = str.replaceAll("\\n","Y"); 
System.out.println(newStr); 

打印: -

A B Y C 
-3

更新:

我已經修改了它的\ n多ocurrences工作。請注意,這可能不是非常有效。

public static String replaceBob(String str,int index){ 
    char arr[] = str.toCharArray(); 
    for(int i=index; i<arr.length; i++){ 
     if(arr[i]=='\\' && i<arr.length && arr[i+1]=='n'){ 
      String temp = str.substring(0, i)+"bob"; 
      String temp2 = str.substring(i+2,str.length()); 
      str = temp + temp2; 
      str = replaceBob(str,i+2); 
      break; 
     } 
    } 
    return str; 
} 

我試着用這個和它的工作

String x = "Bob was a bob \\n 123 \\n aaa \\n"; 
System.out.println("result:"+replaceBob(x, 0)); 

第一次調用函數在這裏使用的0

+0

爲什麼downvote? – Enrique 2010-12-16 02:30:22

+3

選擇一個理由:1)它比需要更復雜; 2.)這是非常低效的; 3)它是無償遞歸的; 4.)它在if條件中有一個錯誤的錯誤; 5.),然後在'if'塊內部出現一個off-by-2錯誤; 6.)它使用字符串連接而不是StringBuilder;或者7.)它不能解決OP的問題,那就是他試圖用不含任何字符串的字符串替換換行符。 – 2010-12-16 06:39:38

1
String x = "Bob was a bob \\n"; 
String y = x.replaceAll("was", "bob"); 
System.out.println(y); 

一個問題索引: 「\ n」 是不是換行符號。它應該是:

String x = "Bob was a bob \n";// \n is newline symbol, on window newline is \r\n