的Java的replaceAll与换行符号

问题描述:

的换行符号\ 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); 

"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

您是否尝试过这个?:

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

你应该逃避新加入在使用它替换函数之前使用它。

+0

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

+0

在正则表达式字符串中,您可以使用'\ n'或'\\ n'。在Java编译器完成之后,正则表达式编译器将在第一种情况下看到实际的换行符,或者在第二种情况下看到转义序列反斜杠'n'。无论哪种方式它都会匹配换行符。正如其他人指出的那样,它是目标字符串中的反斜线 - 'n',这是错误的。 – 2010-12-16 06:50:36

您的输入字符串不包含新行。相反,它包含“\ n”。请参阅下面更正的输入字符串。

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

这个按预期工作。

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

打印: -

A B Y C 

更新:

我已经修改了它的\ 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

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