-2

我需要一些聪明的代码来告诉我如何做到这一点。我不能使用子字符串、拆分等,因为没有要搜索的特定字符。我考虑过循环字符串并读取每个字符并有许多 if 语句要测试,但希望有一种更简单的方法来做到这一点。

String str = "'1_First Name'='1_Johns' AND '200_Age' > '30' OR '123_Dog:name' IS 'Bolt'";
Output needed: "'1'='1_Johns' AND '200' > '30' OR '123' IS 'Bolt'"

这是一个补救查询字符串。“1_First Name”是列名,“1_Johns”是列值。

我在列名后面附加了列 id_,然后给了我例如:'1_First Name'。

在 Remedy 中,我们可以搜索列名或列 ID。但是列名可以相同,但列 ID 是唯一的。

这就是为什么只有字符串的某些部分必须被操纵而其他部分不需要的原因。

4

1 回答 1

2
str = str.replaceAll("('\\d+)_[^']+'(?=\\s*([<>=!]|IS))", "$1'");
  • ('\\d+)_[^']+'是每个变量的匹配项。
  • 对后面的运算符有一个前瞻(?=\\s*([<>=!]|IS))(?= ... )与模式的前瞻\\s*([<>=!]|IS)

这或多或少区分了变量和值,两者都具有相同的规则模式。

于 2019-06-11T14:31:18.900 回答