java - Java中为什么要用反斜杠来代替特殊字符?

标签 java replace special-characters backslash

我想从字符串中删除\n 和\。首先,我删除了换行符,然后删除了反斜杠。我无法一步完成。我按照下面的方法做了。

Step 1

  String query = " \"id\" \\$ \\nVD \\";
  System.out.println(query);   // "id" \$ \nVD \ 

Step2

  query = query.replaceAll("\\\\n", "");
  System.out.println(query);   //"id" \$ VD \

Step 3

  query = query.replace("\\", "");
  System.out.println(query);  // "id" $ VD      

在步骤2中,我使用replaceAll删除换行符(\n)。

在步骤 3 中,我使用了替换来删除字符串中的反斜杠。步骤 2 尝试使用 n ie 查找反斜杠。\n (换行符),因此它单独避免了\(反斜杠)。据我了解,由于反斜杠是一种特殊字符,我们在字符串替换方法中又使用了一个将其标识为文字。

但是在步骤 2 中,为什么我们使用三个反斜杠来替换换行符?

最佳答案

在第二步中,您实际上使用 4 个反斜杠(不是“黑色”)来替换 \n 字符。

字符串中的 \n 实际上并不是新行。它们代表一个 \ 和一个 n 字符。要在 Java 代码中编写此内容,您需要另一个 \ 来转义 \。因此,要将 \n 表示为 Java 中的字符串,您需要执行以下操作:

String s = "\\n";

现在让我们看看replaceAllreplaceAll 采用正则表达式并替换字符串中的每个匹配项。在本例中,您需要匹配 \ 后跟 n。您不能只使用这样的正则表达式:

\n

因为 \n 在正则表达式中表示“匹配新行”。您只想匹配 \n

所以你必须使用另一个\来转义\。此正则表达式匹配 \ 后跟 n:

\\n

现在您已经有了正则表达式,您需要用 Java 代码编写它。您需要在 Java 字符串中表示“2 个 \s 和一个 n”。为此,您需要一个 \ 来转义字符串中的每个 \。这就是为什么你最终会得到

"\\\\n"

上面的意思是正则表达式中的\\n,它与字面上的\n匹配。

关于java - Java中为什么要用反斜杠来代替特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45858998/

相关文章:

java - 如何在几分钟内检索两个 Date 实例之间的差异?

java - 如何防止用户在MDI窗口中打开多个JPanel?

javascript - 将所有纯文本替换为同一 div 的类

javascript - 将不同的字符替换为一个

c++ - 将带有 '\b' 转义字符(退格键)的字符串转换为普通字符串

Java 回文程序(我走上正轨了吗)?

java - 当某些线程执行其任务时,阻止特定线程参与线程调度程序

Python-替换列表中的项目仅替换第一个实例,而不是所有实例

linux - 如何在引号、单引号或反引号中使用通配符或任何其他特殊字符?

javascript - 如何在 .Net 核心 API 的查询字符串中传递特殊字符?