Java Regex для токенизации строки - PullRequest
0 голосов
/ 22 ноября 2011

Это моя исходная строка

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 )

Есть идеи, как это сделать?

Спасибо

1 Ответ

5 голосов
/ 22 ноября 2011

Я бы посоветовал написать парсер для этого. Все, что вам нужно сделать, это подсчитать количество открытых скобок и обрезать строку, если есть запятая и счетчик равен 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...