我想根据分隔符拆分字符串,但只能在括号外。是否有任何库(内置或非内置)可以这样做?示例:如果分隔符为“:”,则:字符串“a:b:c”应拆分为“a”、“b”、“c” 字符串“a(b:c):d”应拆分为“a (b:c)","d"
谢谢
其他评论者是对的,您可能最好使用语法库。但是,如果这是一次性的事情,而您宁愿快速处理它,则该算法应该以清晰的方式处理它,并将处理嵌套括号。注意:我假设您的括号是平衡的,即没有右括号之前没有左括号。
int parenDepth = 0;
int start = 0;
List<String> splits = new ArrayList<String>();
for(int i = 0; i < str.length(); i++)
{
char ch = str.get(i);
if(ch == '(')
parenDepth++;
else if(ch == ')')
parenDepth--;
else if(parenDepth == 0 && ch ==',')
{
if(start != i) // comment out this if if you want to allow empty strings in
// the splits
splits.add(str.substring(start, i));
start = i+1;
}
}
splits.add(str.substring(start));