[英]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.