从字符串中替换子字符串

时间:2012-02-10 10:41:39

标签: java string

我有这个字符串

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 个答案:

答案 0 :(得分:1)

尝试:

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

See it @ work

答案 1 :(得分:0)

我认为这是太多的工作和聪明才值得。

我很懒,需要最终的静态实例,每个案例一个字符串。然后我会写一个if测试来决定使用哪个。

为什么每次都有效?这次操作会执行多少次?如果只有两个答案,拼出来。我认为它更易读,CPU负载更少。

答案 2 :(得分:0)

当然,

这可以用任何语言来完成,Java也是如此。

这个怎么样:

将字符串标记为')'。

然后,如果令牌包含单词'lookup',则将')'的最后一个实例替换为'123)'。

我认为这可能有效,但很难看,但看起来很好。