如何在Java中转义字符串?
我正在用Java读取一个源文件,但当我打印它(sysout)时,转义字符不再转义。如何在Java中对字符串中的如何在Java中转义字符串?,java,string,escaping,Java,String,Escaping,我正在用Java读取一个源文件,但当我打印它(sysout)时,转义字符不再转义。如何在Java中对字符串中的\n和\t等字符进行转义?使用: \\n和\\t 某些字符前面带有反斜杠(\)形成了一个转义序列,对编译器具有特殊意义。因此,在您的情况下,\n和\t被视为特殊(分别为换行符和制表符)。因此,我们需要避开反斜杠,使n和t按字面意思处理。给定字符串s s = s.replace("\\", "\\\\"); 将所有\替换为\适用于字符串相关的操作您应该使用中的类(您也可以在Apache
\n
和\t
等字符进行转义?使用:
\\n
和\\t
某些字符前面带有反斜杠(
\
)形成了一个转义序列,对编译器具有特殊意义。因此,在您的情况下,\n
和\t
被视为特殊(分别为换行符和制表符)。因此,我们需要避开反斜杠,使n
和t
按字面意思处理。给定字符串s
s = s.replace("\\", "\\\\");
将所有\
替换为\
适用于字符串相关的操作您应该使用中的类(您也可以在Apache Commons Lang3中找到该类,但该类已弃用)。您会发现,apachecommons中有很多其他产品可能对解决Java开发中的其他问题很有用,这样您就不会重新发明轮子了
您想要的特定调用与“Java转义”有关;API调用是。例如:
System.out.println(StringEscapeUtils.escapeJava("Hello\r\n\tW\"o\"rld\n")
将打印:
Hello\r\n\tW\"o\"rld\n
该库中还有很多其他转义实用程序。您可以找到并将其添加到Maven项目中,如下所示:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.3</version>
</dependency>
这里的许多解决方案建议添加和使用。这里的其他一些解决方案完全是错误的 潜在的解决方案如下:
/**
*逃逸
*
*转义给定字符串以使其安全地打印或存储。
*
*@param是输入字符串。
*@返回输出字符串。
**/
公共静态字符串转义(字符串s){
返回s.replace(“\\”,“\\\”)
.替换(“\t”和“\\t”)
.替换(“\b”和“\\b”)
.替换(“\n”和“\\n”)
.替换(“\r”和“\\r”)
.替换(“\f”和“\\f”)
.替换(“\”,“\ \”)
.替换(“\”,“\ \”);
}
转义列表来自Oracle的。(请注意,\\
是先转义的,因为您不想在以后重新转义它。)
这个解决方案并没有可能的那么快,但它应该可以工作。理想情况下,您只需解析字符串一次,而不需要继续重建字符串数组。对于小字符串,这应该是好的
如果从存储数据的角度来考虑这个问题,也可以考虑把它转换成表示形式——它是快速的、单一的解析和使用不太多的额外空间。
你可以将当前代码张贴以供阅读和输出吗?你在源文件中是如何阅读的?你到底是怎么印刷的?从您的描述中,我不清楚转义序列在何处转换为它们所表示的转义字符。我正在读取的文件包含\n
,我想通过编程将其转换为\\n
这是错误的,因为\n被视为一个字符,因此将不会发现\被\\替换。不需要替换(\',“\\'”)。否则,谢谢你的回答。
compile "org.apache.commons:commons-text:1.3"