【问题标题】:Replacing String from JSON response String in android从Android中的JSON响应字符串替换字符串
【发布时间】:2017-04-24 07:23:33
【问题描述】:

字符串替换不起作用

String jsonresponseString ="��  ÿ0{"sid":"QtRm47A_2COfPAO-AANH","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}"


我试过这个代码

String responseString1 = jsonresponseString.replace("�� ÿ0", "");


我想要这样的输出

{"sid":"v3h9kTn3woDQEijKAANS","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}

【问题讨论】:

  • 你是不是只有在启动时才得到这个��\t\u0007ÿ0 的东西?
  • String jsonresponseString ="�� ÿ0{"sid":"QtRm47A_2COfPAO-AANH","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}"不是字符串
  • 但这就是我从 JsonResponse 得到的
  • 不,你没有得到这样的东西。因为引号必须转义才能成为有效的字符串。

标签: java android json string


【解决方案1】:

第一行

String responseString =  �� ÿ0{"sid":"v3h9kTn3woDQEijKAANS","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}

不是有效的 java 代码。您是否从某个程序的输出中复制粘贴它?它应该类似于

String responseString =  "{\"sid\":\"v3h9kTn3woDQEijKAANS\", ...}"

我建议您仔细检查生成 responseString 的内容。

【讨论】:

  • ok,找出第一个引号后的符号的utf8编码是什么,并用这种方式替换它们:newString = responseString.replaceAll("\uFFFD", "");,其中 \uFFFD 是您想要删除的字符的可能 utf8 代码的一个示例。
【解决方案2】:

试试这个代码:

String printjson(String str) {
    // \{\s*\".*\}$|^\[\n?\{\s*\".*\}\n?\]$~s
    Pattern rulePattern = Pattern.compile("\\{\\s*\\\".*\\}$|^\\[\\n?\\{\\s*\\\".*\\}\\n?\\]$~s");
    Matcher a = rulePattern.matcher(str);
    if (a.find()) {
        str = a.group();
    }
    return str;
}


System.out.println(printJson("��  ÿ0{"sid":"QtRm47A_2COfPAO-AANH","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}")

【讨论】:

    猜你喜欢
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2013-09-02
    • 2014-04-12
    • 2016-12-09
    • 2018-07-07
    • 2023-03-25
    相关资源
    最近更新 更多