这是我的源字符串
substrb ( userenv ( 'CLIENT_INFO' ) , 1 , 1 ) , '' , null , substrb ( 'some_text' , 1 , 10 )
Run Code Online (Sandbox Code Playgroud)
我想以下面的形式对其进行标记
[1] : substrb ( userenv ( 'CLIENT_INFO' ) , 1 , 1 )
[2] : ''
[3] : null
[4] : substrb ( 'some_text' , 1 , 10 )
Run Code Online (Sandbox Code Playgroud)
任何想法怎么做?
谢谢
我建议为此编写一个解析器.您需要做的就是计算当前打开括号的数量,如果有逗号且计数器为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());
Run Code Online (Sandbox Code Playgroud)