Java string.replace不作为string.replaceAll工作

Java string.replace不作为string.replaceAll工作,java,string,sonarcloud,Java,String,Sonarcloud,我有一个来自数据库的条目,格式如下。我首先使用了replaceAll而不是replace函数,但显示错误并要求将replaceAll更改为replace。然而,replace并不替换所有的反斜杠,事实上它不会改变文本中的任何内容 java代码中的数据库条目: ""{\"id\":\"5947223f-9c50-425f-950b-e126c94b3adf\",\"name\":\"shruti\"

我有一个来自数据库的条目,格式如下。我首先使用了replaceAll而不是replace函数,但显示错误并要求将replaceAll更改为replace。然而,replace并不替换所有的反斜杠,事实上它不会改变文本中的任何内容

java代码中的数据库条目:

""{\"id\":\"5947223f-9c50-425f-950b-e126c94b3adf\",\"name\":\"shruti\"}
使用replaceAll,我编写了如下代码,效果很好:

abcString.replaceAll("\\\\", "").replaceFirst("\"","");
为了让SonarCloud满意,我尝试用replace更改replaceAll,这反过来告诉be删除replaceFirst方法,否则它会从数据库输出中删除双引号

具有替换功能的代码:

abcString.replace("\\\\", "")
我尝试的第二件事出现了错误:

Unexpected character ('\' (code 92)): was expecting double-quote to start field name
!  at [Source: (String)"{\"id\":\"5947223f-9c50-425f-950b-e126c94b3adf\",\"name\":\"shruti\"}
你真正的问题 JSON一点都不规则,你不能就这样乱搞它。你应该使用一个真正的JSON解析器,而不管是什么东西给了你这个反斜杠的怪物,都是真正的bug所在。您在这里面临的问题是可以“修复”的,但是在您修复这个潜在问题之前,您的代码将保持脆弱的混乱状态

你的云方法 你不应该使用这样的工具,除非你了解它们的作用,而且你问这个问题时根本不知道为什么SonarCloud会建议你替换所有要替换的工具,听起来这个建议适用于你。一定要读一读林廷规则背后的推理

问题
.replaceAll
替换每个引用,但基于正则表达式
.replace
替换每次出现的内容,而不是-它只替换您编写的文本字符串。所以,您所需要做的就是
。替换(“\\”,“”)
。replaceAll需要4个反斜杠,因为这将成为一个包含2个反斜杠的字符串,这是“1个反斜杠”的regexp-ese。

使用Json解析器!!在json的开头有一个双引号