我想根据分隔符拆分字符串,但只是在括号外。 有没有这样的库(内置或不内置)? 例: 如果分隔符是":"然后: 字符串" a:b:c"应分为" a"," b"," c" 字符串" a(b:c):d"应分为" a(b:c)"," d"
由于
答案 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));