Java聪明地替换字符串中需要的字符串部分吗?

时间:2019-06-11 13:59:46

标签: java string remedy

我需要一些巧妙的代码来向我展示如何执行此操作。我无法使用子字符串,拆分等,因为没有要搜索的特定字符。我考虑过循环String并读取每个字符,并有许多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”。

在“补救措施”中,我们可以搜索列名或列ID。但是,列名可以相同,但列ID是唯一的。

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

1 个答案:

答案 0 :(得分:2)

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

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

相关问题