【问题标题】:Backslashes not able to remove from String反斜杠无法从字符串中删除
【发布时间】:2017-04-30 17:06:48
【问题描述】:
       byte[] jsonData = Files.readAllBytes((Paths.get("txt.json")));

        String data = new String(jsonData,"UTF-8");
        data= data.replaceAll("[\\r\\n]+", "");
        data= data.replaceAll("\\t", "");

        data= data.replaceAll("\\\\","");
        response.setResponse(data);

我得到的数据是这样的

       \"abs\": \"abc\",\"dff\": [{\"dff\": [{\"rtr\": \"dfg\",\"fdgdfg\"

但我需要删除斜线

        "abs": "abc","dff": [{"dff": [{"rtr": "dfg","fdgdfg"

请帮我做些改变

【问题讨论】:

  • data= data.replaceAll("\\\"","\""); 就足够了。
  • 停止。 txt.json的内容是什么?为什么需要替换转义字符?
  • 如何你“变成这样”了?你是在控制台上打印吗?或者您是否使用 json 库将其输出为 JSON? (或其他)我猜你正在使用 JSON 库作为字符串输出它,这将在逻辑上添加反斜杠,使其成为有效的 json 字符串。
  • txt.Json 文件是 JSON 文件,我正在尝试从 json 文件中读取并转换为字符串

标签: java json


【解决方案1】:

使用 replace() 代替 replaceAll():

data = data.replace("\\","");

【讨论】:

  • 有什么特别的原因吗?
  • 当然:replace() 是一个简单的字符串替换。 replaceAll() 使用正则表达式。
  • 但这如何回答这个问题?
  • replaceAll("\\\\", "") 更容易阅读并且可能更高效
  • @Christian 是的,这就是 OP 已经逃脱它的原因。这个解决方案与 OP 已经在做的没有什么不同。而 ScareWombat,它的效率并不高(在所有当前的 Java 版本中)——因为 String.replace 在转义所有需要转义的字符后调用 String.replaceAll。
猜你喜欢
  • 2015-03-28
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多