0

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

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

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

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

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

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

即使我使用StringBuffer,由于额外的转义字符,它也不起作用。

请指教。

4

2 回答 2

2

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

在第一种情况下,areplaceAll替换字符序列'\' 'r'并且'\' 'n'是必需的;例如

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

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

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

于 2012-08-18T01:00:01.387 回答
0

好的旧替换怎么样:

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

或者

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

或者

text = text.replaceAll("\\r", "").replaceAll("\\n", "");
于 2012-08-18T00:05:26.483 回答