java - 用java中的空格替换json字符串中的特殊字符(不可打印的字符)

标签 java json regex

尝试用空格替换 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/

相关文章:

json - 自动生成文档ID时,以 Elasticsearch 方式更新文档

javascript - 正则表达式从链接中删除除文件名之外的所有内容

php - 可靠的昵称正则表达式

regex - 如何在正则表达式中包含双引号(“)

java - 线程中的异常 java.lang.NullPointerException

java - 如何使用 Maven 插件为每个编译创建一个新类

javascript - Grunt 未加载

java - JPA ORM 的 Java DTO 的对象建模父/子关系

Java 构造函数重载错误?

c# - 处理不同命名空间中重复类的最佳实践