java - 在 Java 中使用分隔符逗号在嵌套大括号中拆分字符串

标签 java arrays regex split

尝试在字符串中使用逗号作为分隔符进行拆分并添加到字符串数组中,但在使用正则表达式拆分字符串时遇到问题。

String[] stringParts = str1.split(",(?![^\\[]*\\])");

        for (int i=0; i<stringParts.length; i++){
            stringParts[i] = stringParts[i].trim();//remove trailing leading spaces.
        }
        //System out
        for (String s:stringParts){
            System.out.println(s);
        }

输入字符串

String str="1, two, {\"\"Customization\"\":{\"\"EMPLOYEEID\"\":\"\"EMPID001\"\",\"\"MANAGER_ID\"\":\"\"MNGID001\"\",\"\"DEPARTMENT\"\":\"\"IT\"\"},\"\"OTHERDETAILS\"\":{\"\"GENDER\"\":\"\"M\"\",\"\"DESIGNATION\"\":\"\"SENIOR\"\",\"\"TEAM\"\":\"\"QA\"\"}}, 8, nine,{{\"COMPANYNAME\":\"XYZ Ind Pvt Ltd\"},{[ten,{\"11\":\"12\"},{\"thirteen\":14}]}},\"fifteen\",16";

要求的输出

1
two
{""Customization"":{""EMPLOYEEID"":""EMPID001"",""MANAGER_ID"":""MNGID001"",""DEPARTMENT"":""IT""},""OTHERDETAILS"":{""GENDER"":""M"",""DESIGNATION"":""SENIOR"",""TEAM"":""QA""}}
8
nine
{{"COMPANYNAME":"XYZ Ind Pvt Ltd"},{[ten,{"11":"12"},{"thirteen":14}]}}
fifteen
16

最佳答案

这不是正则表达式设计的目的。您需要创建一个解析器。

或者你可以做类似的事情:

public static void main(String[] args) {
    String str = "1, two, {\"\"Customization\"\":{\"\"EMPLOYEEID\"\":\"\"EMPID001\"\",\"\"MANAGER_ID\"\":\"\"MNGID001\"\",\"\"DEPARTMENT\"\":\"\"IT\"\"},\"\"OTHERDETAILS\"\":{\"\"GENDER\"\":\"\"M\"\",\"\"DESIGNATION\"\":\"\"SENIOR\"\",\"\"TEAM\"\":\"\"QA\"\"}}, 8, nine,{{\"COMPANYNAME\":\"XYZ Ind Pvt Ltd\"},{[ten,{\"11\":\"12\"},{\"thirteen\":14}]}},\"fifteen\",16";
    StringTokenizer st = new StringTokenizer(str, ",", true);
    int bracketCount = 0;
    while (st.hasMoreTokens()) {
        String token = st.nextToken();
        long brackets = token.chars().map(ch -> (ch == '{' ? 1 : (ch == '}' ? -1 : 0))).sum();
        bracketCount += brackets;
        if (bracketCount == 0 && ",".equals(token)) {
            System.out.println("");
        } else {
            System.out.print(token);
        }
    }
}
  • 获取字符串并在 , 上拆分,保留分隔符作为输出标记
  • 计算打开和关闭的次数 { }。确保所有括号都已关闭。
  • 如果所有的 { } 都已经关闭,那么移到下一行

关于java - 在 Java 中使用分隔符逗号在嵌套大括号中拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58761426/

相关文章:

javascript - JavaScript 数组和拆分问题

python - 如何根据字符拆分数据框列并保留该字符?

java - WEB-INF 中的页面访问网页文件夹中的图像是否有问题

java - jdbc 使用 jdk13.0.1 遇到 java.lang.ClassNotFoundException

javascript - replaceChild() 移动图像仅在 javascript 中运行一次

python - Python中findall和括号的使用

Javascript:正则表达式转义空间

java - 从 javax.persistence.EntityManager 获取 javax.sql.DataSource

TorqueBox 中的 Java 部署

c - 别名结构和数组是否合法?