这是我的源字符串
substrb ( userenv ( 'CLIENT_INFO' ) , 1 , 1 ) , '' , null , substrb ( 'some_text' , 1 , 10 )
我想将其标记为以下形式
[1] : substrb ( userenv ( 'CLIENT_INFO' ) , 1 , 1 )
[2] : ''
[3] : null
[4] : substrb ( 'some_text' , 1 , 10 )
知道如何做吗?
谢谢
最佳答案
我建议为此编写一个解析器。您需要做的就是计算当前打开的括号的数量,如果有逗号并且计数器为 0,则剪切字符串。
类似的事情:
int openBrackets = 0;
ArrayList<String> tokens = new ArrayList<String>();
StringBuilder tmp = new StringBuilder();
for (int i = 0; i < inputString.length; ++i) {
char cc = inputString.charAt(i);
if (cc == '(') openBrackets++;
else if (cc == ')') openBrackets--;
else if ((cc == ',') && (openBrackets == 0)) {
tokens.add(tmp.toString());
tmp.delete(0, tmp.length());
}
else tmp.append(cc);
}
if (tmp.length() > 0) tokens.add(tmp.toString());
关于Java正则表达式来标记字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8224782/