为什么\n打印不出来?
System.out.println(Pattern.quote("\\d c pb sddsf \n"));
基本上所有的东西都会分开打印出来\n。有什么线索吗?它应该“文字化”整个字符串,不是吗?
正如这里所说:
输入序列中的元字符或转义序列将没有特殊含义。
为什么\n打印不出来?
System.out.println(Pattern.quote("\\d c pb sddsf \n"));
基本上所有的东西都会分开打印出来\n。有什么线索吗?它应该“文字化”整个字符串,不是吗?
正如这里所说:
输入序列中的元字符或转义序列将没有特殊含义。
\n是一个有效的 java 转义字符,用反斜杠将其转义以将其视为普通字符。:
System.out.println(Pattern.quote("\\d c pb sddsf \\n"));
这完全按照它应该做的那样工作。您可能会因为正在查看的输出而感到困惑。让我们考虑以下示例以获取更多详细信息
System.out.println(Pattern.quote("First part \t Second part \n Third part"));
以下的输出将是
\QFirst part Second part
Third part\E
在字符串的开头和结尾,它\Q表示“文字文本的开头”(即正则表达式“打开引号”)
\E表示“文字文本的结尾”(即正则表达式“关闭引号”),这意味着它将字符串转换为正则表达式文字。
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字符串(我们认为它应该工作,但不是因为 quote() 方法)。
见输出。
First part :: \Q \E
Second part :: \Q \E
Third Part :: \Q \E
First part Second part Third Part :: \Q\t\E