繁体   English   中英

删除不可打印的字符

[英]Removing non printable characters

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

String xyz = "Company Name\r\n Magna";

从数据库中检索到后,在Java中,值如下所示

String companyname = "Company Name\\r\\n Magna";"

它添加了一个附加的转义字符。 我现在如何删除不可打印的字符?

companyname.replaceAll("\\p{Cntrl}", ""); // Doesn't work.

即使我使用StringBuffer ,也不会因为附加的转义字符而起作用。

请指教。

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

在第一种情况下,需要替换字符序列'\\' 'r''\\' 'n'replaceAll 例如

text = text.replaceAll("\\\\r|\\\\n", "");

请注意,为了匹配文字反斜杠字符,必须对它们进行两次转义。 一次是字符串文字,第二次是因为反斜杠是正则表达式中的元字符。

但是,IMO,一个更好的解决方案是不要在数据库中以这种方式编码CR和NL字符。 您不能不逃避就只在数据库中表示它们吗?

好的旧替换怎么样:

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

要么

text = text.replaceAll("\\r|\\n", "");

要么

text = text.replaceAll("\\r", "").replaceAll("\\n", "");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM