为什么我不能比较这个炭?

时间:2013-07-17 18:44:14

标签: java

我有一种方法用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)=='\'无效?

6 个答案:

答案 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)

因为'\'字符是一个特殊的转义字符。你需要使用'\\'

Java Characters

Illegal Escape Character "\"