java - 需要根据分隔符分割字符串,但它们被分组

标签 java regex string parsing tokenize

我有一个像

这样的字符串
String str = "(3456,"hello", world, {ok{fub=100, fet = 400, sub="true"}, null }, got, cab[{m,r,t}{u,u,r,}{r,m,"null"}], {y,i,oft{f,f,f,f,}, tu, yu, iu}, null, null)

现在我需要根据逗号(,)分割这个字符串,但是{}和[]之间的字符串不应该被分割。所以我的输出应该是这样的

3456
hello
world
{ok{fub=100, fet = 400, sub="true"}, null}
got
cab[{m,r,t}{u,u,r,}{r,m,"null"}]
{y,i,oft{f,f,f,f,}, tu, yu, iu}
null
null

我知道这看起来很奇怪,我可以使用旧的传统暴力方法来做到这一点,但我需要是否有针对此类问题的最简单的逻辑。

谁能帮帮我吗?

提前致谢:-)

最佳答案

// Assuming open brackets have corresponding close brackets
int brackets = 0;
int currIndex = 0;
List<String> output = new ArrayList<String>();
for (int i = 0; i < str.length(); i++) {
    if (isOpenBracket(str.charAt(i))) {
        brackets++;
    } else if (isCloseBracket(str.charAt(i))) {
        brackets--;
    } else if (str.charAt(i) == ',') {
        output.add(str.substring(currIndex, i));
        currIndex = i + 1;
    }
}
output.add(currIndex, str.length());
return output;

这行得通吗?

关于java - 需要根据分隔符分割字符串,但它们被分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917779/

相关文章:

正则表达式与小字符串的蛮力

java - 如何更新现有 Amazon S3 文件的元数据?

java - 如何检查 if 语句中元素的可见性?

java - “java.io.ObjectOutputStream”已弃用 - Intellij IDEA 中的错误

javascript - Javascript 的 URL 解析问题

c# - 在 .Net 中为整个句子实现 soundex

mysql - 通过掩码(正则表达式)从 MySQL 中获取子字符串

java - 如何在 Java 中格式化和打印多个字符串

C++ 使用 wstring/wchar_t

java - XML结构的复杂度对解析速度有影响吗?