【问题标题】:Why can't I compare this char? [duplicate]为什么我不能比较这个字符? [复制]
【发布时间】:2013-07-16 11:26:19
【问题描述】:

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

【问题讨论】:

标签: java


【解决方案1】:

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

text.charAt(i) == '\\'

【讨论】:

    【解决方案2】:

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

    编辑

    您也可以省去麻烦,改用String.replaceAll 方法,如下所示:

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

    输出:

    foo<br/>bar<br/>blah
    

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            Java Characters

            Illegal Escape Character "\"

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2022-07-26
              • 1970-01-01
              • 1970-01-01
              • 2011-03-10
              • 2013-02-27
              • 2012-04-12
              • 2021-01-29
              相关资源
              最近更新 更多