2

我想根据分隔符拆分字符串,但只能在括号外。是否有任何库(内置或非内置)可以这样做?示例:如果分隔符为“:”,则:字符串“a:b:c”应拆分为“a”、“b”、“c” 字符串“a(b:c):d”应拆分为“a (b:c)","d"

谢谢

4

1 回答 1

0

其他评论者是对的,您可能最好使用语法库。但是,如果这是一次性的事情,而您宁愿快速处理它,则该算法应该以清晰的方式处理它,并将处理嵌套括号。注意:我假设您的括号是平衡的,即没有右括号之前没有左括号。

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));
于 2012-07-22T08:28:34.203 回答