- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从字符串中删除\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";
现在让我们看看replaceAll
。 replaceAll
采用正则表达式并替换字符串中的每个匹配项。在本例中,您需要匹配 \
后跟 n
。您不能只使用这样的正则表达式:
\n
因为 \n
在正则表达式中表示“匹配新行”。您只想匹配 \
和 n
。
所以你必须使用另一个\
来转义\
。此正则表达式匹配 \
后跟 n
:
\\n
现在您已经有了正则表达式,您需要用 Java 代码编写它。您需要在 Java 字符串中表示“2 个 \
s 和一个 n
”。为此,您需要一个 \
来转义字符串中的每个 \
。这就是为什么你最终会得到
"\\\\n"
上面的意思是正则表达式中的\\n
,它与字面上的\n
匹配。
关于java - Java中为什么要用反斜杠来代替特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45858998/
我是一名优秀的程序员,十分优秀!