我有一个看起来像这样的字符串:
我只想在两个单独的字符串中获取事件和args的字符串。基本上我只想要说" statusChanged"在变量1和" {" newStatus":"解除武装"}"第二,我需要这个。 我怎么能这样做?
答案 0 :(得分:1)
尝试使用正则表达式。
您也可以先尝试解析JSON-String,然后从解析后的Object中获取字符串。
答案 1 :(得分:0)
考虑到提供的字符串不是有效的JSON,您可以尝试以下代码:
List<String> result = Stream.of(s.split("data:"))
.map(String::trim)
.filter(l -> l.startsWith("\"event\"") || l.startsWith("\"args\""))
.map(l -> l.trim().split(":", 2)[1])
.collect(Collectors.toList());
在你的情况下,会返回一个包含两个元素的列表。
答案 2 :(得分:0)
好的,我最终解决了这个问题
String[] eventAux = events[2].split(":");
String[] argsAux = events[3].split(":");
String event = eventAux[2].replace("\"", "");
String arg = argsAux[3].replace("\"", "").replace("}", "").replace("data", "");
答案 3 :(得分:0)
尝试一下,这里 dataString 是您的字符串。
String FirstString,SecondString;
int FirstIndex,SecondIndex;
FirstIndex = dataString.indexOf("data: \"event\": ") +15;// 15 characters "data: \"event\": "
SecondIndex = dataString.indexOf("data: \"args\": ") +14;// 14 characters "data: \"args\": "
FirstString = dataString.substring(FirstIndex,dataString.indexOf(",",FirstIndex));
SecondString = dataString.substring(SecondIndex,dataString.indexOf("data:",SecondIndex));
System.out.println(FirstString);
System.out.println(SecondString);
它可以帮助您获取子字符串。