猿问

有没有办法替换 .json 文件中字符串中的括号?

我正在开发一个具有巨大 .json 数据库的应用程序,我在 .json 文件中需要的许多字符串内部都有大括号(“{”、“}”),这是我不想要的,如下所示:


[

      {

        "name": "Whatever",

        "entries": [

          "If something something {28} + {41.6} something"

        ]

      }

]

我需要将字符串设为“如果某事 28 + 41.6 某事”。


我通过获取我需要的字符串并使用以下方法来删除它们:


public String formatText(String text) {


    String newtext = text.replaceAll("\\{", "").replaceAll("\\}", "");


   return newtext;

}

这行得通,但让一切都变得非常缓慢。我在文件中有其他字符,例如“@”,通过选择所有字符并替换为空字符串,我可以在文本编辑器中删除它们没有问题。但是,如果我对大括号使用相同的逻辑,它也会删除 json 对象括号。


任何人都可以想出一种方法来编辑此文件并仅删除字符串内的括号吗?


(我曾想过制作一种方法来复制字符串、格式化它们并将它们发送到一个新的 .json 文件,但这在时间上确实不合时宜,因为每个对象内部都有很多不同的值。)


慕尼黑5688855
浏览 288回答 3
3回答

海绵宝宝撒

如果您想使用文本编辑器的查找/替换功能 - 使用 intelij 之类的 IDE - 可以选择用正则表达式替换内容。例如,这(?=\S.)({|})应该只用字符串中的大括号覆盖你的情况,而不是触及 json 语法大括号。如果您有其他特殊情况 - 它们应该包含在正则表达式中。示例 - https://regex101.com/r/wbIgKX/1不过,我建议创建一个适当的 json 解析器类来专门处理你的东西。

米脂

如果您确定 JSON 文件的格式与您的示例一样,您可以检查该行是否包含除空格和 { 或 } 之外的任何其他内容如果该行包含其他任何内容,则替换括号如果不是,请不要更换

临摹微笑

我尝试了多种方法来解决此问题,但您无法直接替换它。有办法做到这一点,首先迭代json并检查该行是否包含花括号。如果包含,则可以使用 str.replaceAll("[{}]", "");。这将删除所有花括号,并为您提供没有大括号的字符串。
随时随地看视频慕课网APP

相关分类

Java
我要回答