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