从返回的字符串中删除括号
Posted
技术标签:
【中文标题】从返回的字符串中删除括号【英文标题】:remove brackets from returned string 【发布时间】:2019-07-02 13:59:51 【问题描述】:我目前在我的 selenium 测试中调用一个 json,它们以 [4534535] 的形式返回,我想删除括号并只留下 4534535 但我当前使用的代码似乎没有这样做,我找不到解决方案。
目前我正在使用
String[] tmp = response_body_string.split("[\\[\\]]");
String val2 = tmp[0];
val3 = val2.replaceAll("[^0-9]", "");
response_body_string 是我从 json 收到的(请不要有时有一个返回的代码列表,这就是我使用 string[] 的原因 但它似乎什么也没返回,是 tmp[0] 导致了问题吗?
我尝试在另一个 json 中使用代码,然后将“4534535”字符串传递给下一个。当有多个代码编号时,我可以使用该代码,例如 [3343,221213] 工作正常,因为我正在使用
String[] tmp = response_body_string.split(",");
tmp = tmp[1].split(",");
//Returns second game ID
String val2 = tmp[0];
val3 = val2.replaceAll("[^0-9]", "");
【问题讨论】:
使用您想要删除括号的 json 的完整示例以及您想要的结果来编辑问题 我试过 val3 = val2.replaceAll("[\\\\pPs\\\\pPe]", "");但似乎又什么都没回来了"[123124321524]".replaceAll("\\[|\\]", "");
将返回 123124321524
这是一个 XY 问题。您真正想要回答的问题是如何解析 json 中的值...使用正则表达式删除括号只是您尝试的解决方案不正确的问题。
【参考方案1】:
你接近你最后一行的答案。您可以使用replaceAll()
删除除数字和逗号之外的所有内容,然后进行拆分。
String[] tmp = response_body_string.replaceAll("[^0-9,]", "").split(",");
虽然我建议您将其解析为 JSON 以避免任何令人不快的意外。例如你可以使用fastxml的com.fasterxml.jackson.databind.ObjectMapper
ObjectMapper mapper = new ObjectMapper();
List<Integer> tmp = mapper.readValue(response_body_string, new TypeReference<List<Integer>>() );
【讨论】:
【参考方案2】:如果我说得对,您只想删除括号并只获取数字。您可以使用:
String[] tmp = response_body_string.split("[\\[\\]]");
String tmp = tmp[0].substring(1,tmp.length-1);
希望我没听错。
编辑:
如果response_body_string
是一个字符串(我假设是,因为你使用的是字符串函数),你可以对它做子字符串。像这样:
String Final = response_body_string.substring(1,response_body_string.length-1);
【讨论】:
以上是关于从返回的字符串中删除括号的主要内容,如果未能解决你的问题,请参考以下文章