我不想用/ u000A替换它,不要让它看起来像"asdxyz/u000A"
我想用实际的换行符CHARACTER替换它.
只需使用String.replace()
:
newtext = text.replace("\\n", "\n");
根据您对Natso答案的回应,您似乎对正在发生的事情存在根本性的误解.双字符序列\n
不是换行符.但这是我们在代码中表示该角色的方式,因为实际的角色很难看到.编译器知道当它在字符串文字的上下文中遇到那个双字符序列时,它应该将它们解释为真正的换行符,其ASCII值为10.
如果将两个字符的序列打印到控制台,则不会看到它们.相反,您将看到光标前进到下一行.那是因为编译器已经用换行符替换了这两个字符,所以它实际上是发送到控制台的新行字符.
如果您的程序输入包含反斜杠和小写N,并且您想将它们转换为换行符,那么Zach的答案可能就足够了.但是如果你希望你的程序在输入中允许真正的反斜杠,那么你需要一些输入方式来指示反斜杠后跟一个小写的N实际上应该是那两个字符.通常的做法是在反斜杠前加上另一个反斜杠,然后转义它.如果在这种情况下使用Zach的代码,最终可能会将三字符序列\\n
转换为由反斜杠后跟换行字符组成的双字符序列.
读取使用反斜杠转义的字符串的可靠方法是从输入的开头一次解析一个字符.将字符从输入复制到输出,除非遇到反斜杠.在这种情况下,也要检查下一个字符是什么.如果是另一个反斜杠,则将单个反斜杠复制到输出.如果它是小写的N,则将新行字符写入输出.如果它是任何其他角色,那么无论你定义什么是正确的.(示例包括拒绝整个输入为错误,假装反斜杠不存在,并省略反斜杠和后续字符.)
如果您正在尝试在调试器中观察变量的内容,则调试器可能会检测到换行符将其转换回双字符序列\n
.因此,如果您正在逐步查看代码中的内容,那么您可能会成为调试器有用的牺牲品.在大多数情况下,它确实很有帮助.程序员通常想要确切地知道字符串中的字符是什么; 他们不太关心这些角色在屏幕上的显示方式.