在这种情况下如何从String中获取子串?

时间:2018-06-18 14:18:47

标签: java android string

我有一个看起来像这样的字符串:

enter image description here

我只想在两个单独的字符串中获取事件和args的字符串。基本上我只想要说" statusChanged"在变量1和" {" newStatus":"解除武装"}"第二,我需要这个。 我怎么能这样做?

4 个答案:

答案 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);

它可以帮助您获取子字符串。