0

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

4

6 回答 6

7

\是一个特殊字符,用于表示回车控制字符的开头,例如\n\t。它应该被转义以表示反斜杠字符本身

text.charAt(i) == '\\'
于 2013-07-17T18:45:19.230 回答
3

“\”字符用于转义字符。您必须使用双重转义来实例化您的 char ,例如 char '\\'

编辑

您也可以省去麻烦并改用该String.replaceAll方法,例如:

String foo = "foo\nbar\r\nblah";
System.out.println(foo.replaceAll("((\r)?\n)", "<br/>"));

输出:

foo<br/>bar<br/>blah
于 2013-07-17T18:45:51.157 回答
1

你在做什么在概念上是不正确的:

if((text.charAt(i+1)=='n') && (text.charAt(i)=='\')){ //<--- Error line

您似乎正在尝试检测\n,但这是一个字符(ASCII 表上的 10 个),而不是两个:

if (text.charAt(i) == '\n') {

其他人已经解释了为什么'\'不起作用。

于 2013-07-17T18:49:28.770 回答
0

\\ 替换为 \。这就是为什么你需要这样写。你需要逃避它。

于 2013-07-17T18:46:48.270 回答
0

这是因为反斜杠用于转义下一个字符,所以你正在转义 end '。您需要通过键入来转义反斜杠'\\'

于 2013-07-17T18:47:26.590 回答
0

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

Java 字符

非法转义字符“\”

于 2013-07-17T18:47:55.153 回答