尝试用空格替换 json 字符串中的特殊字符(不可打印字符)。它没有被替换。但相同的正则表达式正在替换普通的 java 字符串。
String regex = "[\\x00-\\x1F]+";
带字符串
String text = "To test\tthe\tspecial char\tin text and \rtab\t\n \t Check the interest";
text = text.replaceAll(regex, " ");
输出:
To test the special char in text and tab Check the interest
使用 JsonString(不起作用)
String text = "{\"notes\":\"To test\\tthe\\tissues\\tin text and \\rtab\\t\\n \\tCheck the interest\"}";
text = text.replaceAll(regex, " ");
输出:
{"note_to_regulator":"To test\tthe\tissues\tin text and \rtab\t\n \tCheck the interest"}
在 json 字符串中,此正则表达式不起作用。我猜这是由于 json 字符串中的“\”转义字符造成的,但不确定。 请让我知道此正则表达式需要进行哪些更改才能在 json 字符串中正常工作。
最佳答案
text = text.replaceAll("\\\\[lnrt]", " ").replace("\\\\", "\\");
“...\...”是一个带有反斜杠的字符串,您的字符串实际上不包含控制字符,而是它们的表示形式。
正则表达式中的反斜杠转义,例如数字的\d
必须写成"\\d"
然后反斜杠本身在正则表达式中转义为 "\\\\"
:带有两个反斜杠的字符串。
第一个正则表达式 replaceAll
将处理换页、换行、回车和制表符。
第二个普通字符串替换会将两个反斜杠替换为一个。
用 replaceAll
来写这个会很有趣,实际上使反斜杠的数量加倍。
关于java - 用java中的空格替换json字符串中的特殊字符(不可打印的字符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60153957/