java - 根据分隔符拆分字符串但只在括号外?

时间:2012-07-22 07:39:57

标签: java string

我想根据分隔符拆分字符串,但只是在括号外。 有没有这样的库(内置或不内置)? 例: 如果分隔符是":"然后: 字符串" a:b:c"应分为" a"," b"," c" 字符串" a(b:c):d"应分为" a(b:c)"," d"

由于

1 个答案:

答案 0 :(得分: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));