Заменить подстроку из строки - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть эта строка

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 ??

Ответы [ 3 ]

1 голос
/ 10 февраля 2012

Попробуйте:

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

Посмотри это @ работа

0 голосов
/ 10 февраля 2012

Конечно,

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

Как насчет этого:

Разметить строку на ')'.

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

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

0 голосов
/ 10 февраля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...