为什么\n
无法打印出来?
System.out.println(Pattern.quote("\\d c pb sddsf \n"));
基本上所有内容都会以\n
分开打印出来。任何线索?它应该“整理”整个字符串,不应该吗?
正如here所述:
将给出输入序列中的元字符或转义序列 没有特别的意义。
答案 0 :(得分:2)
\n
是一个有效的java转义字符,用反斜杠转义它以将其视为普通字符。:
System.out.println(Pattern.quote("\\d c pb sddsf \\n"));
答案 1 :(得分:0)
这完全按照预期的方式工作。可能你因为你正在看的输出而感到困惑。让我们考虑以下示例以获取更多详细信息
System.out.println(Pattern.quote("First part \t Second part \n Third part"));
以下输出为
\QFirst part Second part
Third part\E
在字符串的开头和结尾,\Q
表示“文字文本的开头”(即正则表达式“公开引用”)
\E
表示“文字结尾”(即正则表达式“close quote”),这意味着它将字符串转换为正则表达式文字。
First part \t Second part
在这部分中,这两个文本部分由制表空间分隔,这意味着它应该在字符串表示中。
\n Third part
。
如果你想看到那些转义序列,那么你必须使用\
,但在这种情况下,它们将被简单地视为字符串而不是转义字符。
System.out.println(Pattern.quote("First part \\t Second part \\n Third part"));
上面的输出会出来
\QFirst part \t Second part \n Third part\E
有关更多说明,请查看以下
的输出String esc = "\t";
String pat = Pattern.quote(esc);
String [] str = "First part Second part \t Third Part".split(pat);
for(String n : str){
System.out.println(n + " :: " + pat);
}
esc = "\\t";
pat = Pattern.quote(esc);
str = "First part Second part \t Third Part".split(pat);
for(String n : str){
System.out.println(n + " :: " + pat);
}
现在对于esc = "\t";
,它将分割字符串而esc = "\\t";
它不会作为分割方法无法找到任何\t
作为字符串(我们认为这应该起作用,但不是因为引用() 方法)。
请参阅输出。
First part :: \Q \E
Second part :: \Q \E
Third Part :: \Q \E
First part Second part Third Part :: \Q\t\E