我有一种方法用br标签替换字符串中的所有“\ n”实例。我得到未关闭的字符文字错误。
public static String replaceLineWithBr(String text){
String result="";
if(text.length()<=1){
return text;
}else{
for(int i=0;i<text.length();i++){
if((text.charAt(i+1)=='n') && (text.charAt(i)=='\')){ //<--- Error line
result=result+text.substring(0,i)+"<br />"+text.substring(i+2,text.length());
}else return text;
}
}
return text;
为什么此代码text.charAt(i)=='\'
无效?
答案 0 :(得分:7)
\
是一个特殊字符,用于表示托管控制字符的开头,例如\n
和\t
。它应该被转义为代表反斜杠字符本身
text.charAt(i) == '\\'
答案 1 :(得分:3)
“\”字符用于转义字符。
您必须使用双重转义实例化char,例如char '\\'
。
修改强>
此外,您可以省去麻烦并使用String.replaceAll
方法,因此:
String foo = "foo\nbar\r\nblah";
System.out.println(foo.replaceAll("((\r)?\n)", "<br/>"));
输出:
foo<br/>bar<br/>blah
答案 2 :(得分:1)
你所做的事情在概念上是不正确的:
if((text.charAt(i+1)=='n') && (text.charAt(i)=='\')){ //<--- Error line
您似乎正在尝试检测\n
,但这是一个字符(ASCII表上的10个),而不是两个:
if (text.charAt(i) == '\n') {
其他人已经解释了为什么'\'
不起作用。
答案 3 :(得分:0)
\\替换为\。这就是你需要写的原因。你需要逃脱它。
答案 4 :(得分:0)
这是因为反斜杠用于转义下一个字符,所以你正在逃避结束'。您需要输入'\\'
。
答案 5 :(得分:0)