我在数据库中有一个包含不可打印字符的列;
String xyz = "Company Name\r\n Magna";
从数据库中检索后,在java中,值显示如下
String companyname = "Company Name\\r\\n Magna";"
它添加了一个额外的转义字符。如何删除不可打印的字符?
companyname.replaceAll("\\p{Cntrl}", ""); // Doesn't work.
即使我使用StringBuffer
,它也会因为额外的转义字符而失效。
请建议。
答案 0 :(得分:1)
您似乎已经通过在将数据放入数据库之前对数据进行编码的方式为自己创建了一个问题。
首先,需要用replaceAll
替换字符序列'\' 'r'
和'\' 'n'
; e.g。
text = text.replaceAll("\\\\r|\\\\n", "");
请注意,为了匹配文字反斜杠字符,必须将其转义为两次。一次是字符串文字,第二次是因为反斜杠是正则表达式中的元字符。
但是,IMO,更好的解决方法是不在数据库中对CR和NL字符进行编码。你能不能在没有转义的情况下在数据库中代表它们吗?
答案 1 :(得分:0)
老旧的替代品如何:
String text = readfromDatabase();
text = text.replace("\n", "").replace("\r", "");
或
text = text.replaceAll("\\r|\\n", "");
或
text = text.replaceAll("\\r", "").replaceAll("\\n", "");