Java 巧妙地替换需要的字符串中的部分字符串?
Java clever replace parts of string within string needed?
我需要一些聪明的代码来告诉我如何做到这一点。我不能使用 substring、split 等,因为没有要搜索的特定字符。我考虑过循环字符串并读取每个字符,并有许多 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 名称”是列名,“1_Johns”是列值。
我将列名附加到列 id_ 中,例如:'1_First Name'。
在 Remedy 中,我们可以搜索列名或列 ID。但是列名可以相同,但列 ID 是唯一的。
这就是为什么只有字符串的某些部分必须被操作而其他部分不需要的原因。
str = str.replaceAll("('\d+)_[^']+'(?=\s*([<>=!]|IS))", "'");
('\d+)_[^']+'
是每个变量的匹配项。
- 对后续运算符进行前瞻性
(?=\s*([<>=!]|IS))
;
前瞻 (?= ... )
模式 \s*([<>=!]|IS)
.
这或多或少区分了变量和值,两者具有相同的规则模式。
我需要一些聪明的代码来告诉我如何做到这一点。我不能使用 substring、split 等,因为没有要搜索的特定字符。我考虑过循环字符串并读取每个字符,并有许多 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 名称”是列名,“1_Johns”是列值。
我将列名附加到列 id_ 中,例如:'1_First Name'。
在 Remedy 中,我们可以搜索列名或列 ID。但是列名可以相同,但列 ID 是唯一的。
这就是为什么只有字符串的某些部分必须被操作而其他部分不需要的原因。
str = str.replaceAll("('\d+)_[^']+'(?=\s*([<>=!]|IS))", "'");
('\d+)_[^']+'
是每个变量的匹配项。- 对后续运算符进行前瞻性
(?=\s*([<>=!]|IS))
; 前瞻(?= ... )
模式\s*([<>=!]|IS)
.
这或多或少区分了变量和值,两者具有相同的规则模式。