gpt4 book ai didi

Java string.replace 不能作为 string.replaceAll

转载 作者:行者123 更新时间:2023-12-03 23:59:05 24 4
gpt4 key购买 nike

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

在java代码中从数据库中输入:

""{\"id\":\"5947223f-9c50-425f-950b-e126c94b3adf\",\"name\":\"shruti\"}

使用 replaceAll 我编写了如下代码,效果很好:

abcString.replaceAll("\\\\", "").replaceFirst("\"","");

为了让 SonarCloud 满意,我尝试用 replace 更改 replaceAll,这反过来又告诉要删除 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 解析器,而任何给你这个反斜杠的怪物都是真正的错误所在。您在这里面临的问题可以“修复”,但在您修复此潜在问题之前,您的代码仍将是一团糟!

您使用 SonarCloud 的方法

除非您了解它们的作用,否则您不应该使用这样的工具,并且考虑到您提出这个问题时不知道为什么 SonarCloud 甚至建议您替换 replaceAll 来替换,听起来这个建议适用于您.始终阅读 linting 规则背后的推理。

问题

.replaceAll 替换每个匹配项,但基于正则表达式。 .replace 替换每次出现,而不是 - 它只是替换您编写的文字字符串。因此,您需要做的就是 .replace("\\", "")。 replaceAll 需要 4 个反斜杠,因为它变成了一个带有 2 个反斜杠的字符串,即 regexp-ese 表示 '1 backslash'。

关于Java string.replace 不能作为 string.replaceAll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64970649/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com