我有以下代码来解决需要删除简单的json标记的情况:
String inputExample = "[\"883-DDEQW\"]";
inputExample = inputExample.replaceAll("]", "");
inputExample = inputExample.replaceAll("\\[", "");
inputExample = inputExample.replaceAll("\"", "");
inputExample = inputExample.replaceAll("\\\\", "");
,从而使生成的字符串变为所需的字符串:883-DDEQW
因此需要4行代码来执行替换。有没有执行相同操作的更简单(或者我应该说更简洁)的方法?
谢谢!
答案 0 :(得分:0)
您可以匹配所需的输出,而不是除去不需要的字符。您的情况似乎是字母,数字和-
的序列。
因此模式可能如下所示:[\w\d-]+
@Test
public void testRegexp(){
final Pattern pattern = Pattern.compile("([\\w\\d-]+)");
final String inputExample = "[\"883-DDEQW\"]";
final Matcher matcher = pattern.matcher(inputExample);
if (matcher.find()) {
System.out.println(matcher.group());
}
}
结果:883-DDEQW
用于测试正则表达式的有用工具:https://www.freeformatter.com/java-regex-tester.html#ad-output
更新:
如果您知道将获得适当的JSON数组,则可以使用某些库对其进行解析。常用的是Google Gson:
@Test
public void testJson(){
final String inputExample = "[\"883-DDEQW\"]";
JsonArray jsonArray = new JsonParser().parse(inputExample).getAsJsonArray();
for (final JsonElement element: jsonArray){
System.out.println(element.getAsString());
}
}
答案 1 :(得分:0)
您可以将要替换的所有字符放入字符类:
[\]\["\\]
作为Java字符串:
"[\\]\\[\"\\\\]"
您可以将其传递给replaceAll
:
inputExample = inputExample.replaceAll("[\\]\\[\"\\\\]", "");