簡體   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