的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
?
您是否尝试过这个?:
x.replaceAll("\\n", "bob");
你应该逃避新加入在使用它替换函数之前使用它。
这可不好用。 – Kay 2010-12-16 01:46:45
在正则表达式字符串中,您可以使用'\ 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
为什么downvote? – Enrique 2010-12-16 02:30:22
选择一个理由: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
我试图用另一个字符串替换新行,例如“A B \ n C”会变成“A B Y C” – Kay 2010-12-16 01:47:12
正如我所说,输入字符串中没有换行符。 – 2010-12-16 01:52:43
您的输入字符串中没有换行符。它有一个反斜杠后跟一个字母n。同时,你的regex没有换行换行符。它有一个实际的换行符。 – 2010-12-16 01:54:27