[英]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.