新线符号\ n在我尝试检测并替换它时会给我带来一些麻烦: 这很好用:
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);
答案 0 :(得分:8)
"Bob was a bob \\n"
按字面意思Bob was a bob \n
输入字符串中没有要替换的换行符。您是否尝试替换换行符或转义序列\\n
?
答案 1 :(得分:3)
这可以按预期工作。
String str = "A B \n C";
String newStr = str.replaceAll("\\n","Y");
System.out.println(newStr);
打印: -
A B Y C
答案 2 :(得分: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
答案 3 :(得分:0)
你试过这个吗?:
x.replaceAll("\\n", "bob");
在替换函数中使用它之前,您应该转义新行char。
答案 4 :(得分:0)
您的输入字符串不包含新行。相反,它包含" \ n"。请参阅下面的更正输入字符串。
String x = "Bob was a bob \n";
String y = x.replaceAll("\n", "bob");
System.out.println(y);
答案 5 :(得分:-3)
更新:
我已修改它以使用\ n的多个事件。请注意,这可能效率不高。
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。