2012-02-10 4 views
0

У меня есть эта строкаЗаменить подстроку из строки

String str=lookup('PRODUCT','LKP1','LKP_TAB1.ID')||('A'='B')-lookup('PRODUCT','LKP2','LKP_TAB1.ID')||'CON.ID' 

Это всего лишь один пример, в практической ситуации выражение поиска может существовать в любом месте и любое число раз в строке. Также строка может содержать несколько других ('и') '. Мне нужно, чтобы преобразовать строку в

=lookup('PRODUCT','LKP1','LKP_TAB1.ID',123)||('A'='B')-lookup('PRODUCT','LKP2','LKP_TAB1.ID',123)||'CON.ID' 

Это означает, что мне нужно заменить «)» с «123)», когда он приходит с поиском. Но если это не приспосабливается к поиску, я не хочу его заменять.

Можно ли это сделать в java ??

ответ

1

Try:

str = str.replaceAll("(lookup\\([^)]*)\\)","$1,123)"); 

See it @ work

+1

Мне нравится использование регулярных выражений, хорошо сделано - спасибо за обмен. – Ewald

+0

Код работает нормально. Просто awsome :) –

0

Я думаю, что это слишком много работы и умения, чтобы стоить того.

Я был бы ленив и имел бы конечные статические экземпляры, по одной строке для каждого случая. Тогда я бы написал тест if, чтобы решить, какой из них использовать.

Почему все это работает каждый раз? Сколько раз будет выполняться эта операция? Если есть только два ответа, заклинайте их. Я думаю, что это будет более читаемо и меньше нагрузки на процессор.

0

Конечно,

это можно сделать на любом языке, Java, а также.

Как об этом:

разбития строки на ')'.

Затем, если токен содержит слово «поиск», замените последний экземпляр ')' на '123' '.

Я думаю, что это может сработать, это уродливо, но кажется прекрасным.

Смежные вопросы