gpt4 book ai didi

java - 当分隔符可以嵌套时分割字符串

转载 作者:行者123 更新时间:2023-12-01 16:47:10 24 4
gpt4 key购买 nike

我在尝试使用嵌套分隔符分割字符串时遇到了一些麻烦。

我的字符串就像 "(a,b(1,2,3),c,d(a,b,c))" .

我怎样才能得到一个数组["a","b(1,2,3)","c","d(a,b,c)"]

我显然不能使用.split(",") ,因为它也会分割我的子字符串。

最佳答案

这是一个直接的非递归函数,可以按照您想要的方式分割字符串:

private String[] specialSplit(String s) {
List<String> result = new ArrayList<>();
StringBuilder sb = new StringBuilder();
int parenCount = 0;
for (int i = 1; i < s.length() - 1; i++) { // go from 1 to length -1 to discard the surrounding ()
char c = s.charAt(i);
if (c == '(') parenCount++;
else if (c == ')') parenCount--;

if (parenCount == 0 && c == ',') {
result.add(sb.toString());
sb.setLength(0); // clear string builder
} else {
sb.append(c);
}
}
result.add(sb.toString());
return result.toArray(new String[0]);
}

基本上,我们遍历字符串的所有字符并跟踪括号。不考虑第一个和最后一个括号。仅当我们看到相同数量的左括号和右括号且当前字符为 ',' 时,我们才会拆分字符串。

此方法的运行速度可能比您可能找到的任何正则表达式快得多。

关于java - 当分隔符可以嵌套时分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48418934/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com