Java 删除不可打印字符

Java 删除不可打印字符,java,Java,我在数据库中有一列包含不可打印字符 String xyz = "Company Name\r\n Magna"; 在java中,从数据库中检索后,值如下所示 String companyname = "Company Name\\r\\n Magna";" 它添加了一个额外的转义字符。现在如何删除不可打印的字符 companyname.replaceAll("\\p{Cntrl}", ""); // Doesn't work. 即使我使用StringBuffer,它也不会工作,因为有额外的

我在数据库中有一列包含不可打印字符

String xyz = "Company Name\r\n Magna";
在java中,从数据库中检索后,值如下所示

String companyname = "Company Name\\r\\n Magna";"
它添加了一个额外的转义字符。现在如何删除不可打印的字符

companyname.replaceAll("\\p{Cntrl}", ""); // Doesn't work.
即使我使用
StringBuffer
,它也不会工作,因为有额外的转义字符


请提供建议。

如何更换好的旧件:

String text = readfromDatabase();
text = text.replace("\n", "").replace("\r", "");


在将数据放入数据库之前对数据进行编码,这似乎给自己造成了问题

在第一个实例中,需要一个
replaceAll
,它替换字符序列
'\''r'
'\'n'
;e、 g

text = text.replaceAll("\\\\r|\\\\n", "");
请注意,为了匹配文字反斜杠字符,它们必须转义两次。一次是字符串文字,第二次是因为反斜杠是正则表达式中的元字符


但是,在我看来,更好的解决方法是不要在数据库中以这种方式编码CR和NL字符。您不能在数据库中表示它们而不转义吗?

您的数据库中没有不可打印的字符,您的数据库中只有编码字符转义。您必须直接替换转义字符串。问题不清楚。数据库中是否有转义字符,或者实际上是否有包含反斜杠的普通ASCII字母(你想把哪个解释为转义字符?@leonbloy-我很确定是后者。也许相关:我只是想知道你为什么要写你的应用程序以那种形式将文本存储在数据库中……谢谢Stephen。我不能这样做,我们的应用程序不拥有数据库。感谢你的帮助。好吧,在这种情况下,我希望replaceAll方法对您有效。
text = text.replaceAll("\\r", "").replaceAll("\\n", "");
text = text.replaceAll("\\\\r|\\\\n", "");