繁体   English   中英

基于 {} 左大括号和大括号 java 的拆分字符串

[英]Split String based on {} open and curly braces java

我有一个这样的字符串

String str = {"name":"SachText_singleLineText","value":"text project field"},{"name":"SachSlistSingle_singleSelect","value":"s1"},{"name":"SachYesno_boolean","value":["1"]}

我需要根据这样的花括号来拆分它

[0] = {"name":"SachText_singleLineText","value":"text project field"}
[1] = {"name":"SachSlistSingle_singleSelect","value":"s1"}
[2] = {"name":"SachYesno_boolean","value":["1"]}

目前,这就是我正在尝试做的

String[] projectfieldsValueArray = str.split("\\{\\{,\\}\\}");

我尝试了几种来自网络的组合,但仍然无法满足我的要求。 在这种情况下需要使用正确的正则表达式的帮助。

您可以尝试使用模式匹配器。

    String key = "(\\{.*?\\})";
    String str = //your string.;
    Pattern pattern = Pattern.compile(key);
    Matcher matcher = pattern.matcher(str);
    if (matcher.find())
    {
        System.out.println(matcher.group(0));
    }

使用正则表达式将很难让它工作。 考虑这个字符串:

{"name":"{SachText},{singleLineText}","value":"text project field"},{"name":"{SachSlist},{Single_singleSelect}","value":"s1"}

引号内有 "},{" 的子字符串,使它们成为名称本身的一部分,因此您不想拆分它们。

您的字符串看起来像 JSON 数组的元素。 因此,将它们放在“[”和“]”之间并使用 JSON 解析器,例如 Jackson、GSon 或 Moshi,它会正确解析它们。

我假设你的字符串可能是

String str = "{\"name\":\"SachText_singleLineText\",\"value\":\"text project field\"},{\"name\":\"SachSlistSingle_singleSelect\",\"value\":\"s1\"},{\"name\":\"SachYesno_boolean\",\"value\":[\"1\"]}";

如果您需要大括号之间的字符串,请使用正则表达式 [{}] 如果您需要带大括号的拆分字符串,您可以在前面加上“{”和 append“}”

 String[] arrOfStr = str.split("[{}]");
        for(String a: arrOfStr) {
            System.out.println(  a );
        }

O/p:“名称”:“SachText_singleLineText”,“值”:“文本项目字段”,“名称”:“SachSlistSingle_singleSelect”,“值”:“s1”,“名称”:“SachYesno_boolean”,“值”: [“1”]

使用来自 Suvarn Banarjee 的str和来自 Mark Rotteveel 的提示:

String str = "{\"name\":\"SachText_singleLineText\",\"value\":\"text project field\"},{\"name\":\"SachSlistSingle_singleSelect\",\"value\":\"s1\"},{\"name\":\"SachYesno_boolean\",\"value\":[\"1\"]}";
String[] parts = str.split("(?<=\\}),(?=\\{)");

但同样,这对我来说看起来像 JSON,所以通常最好使用 JSON 库,因为我很确定你还没有完成拆分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM