我有一个POJO:
public class Dog {
String uuid;
// ...etc.
}
我想编写一个简单的Groovy表达式,用其他字符/字符串替换uuid
字符串字段中某些字符的实例,具体来说:
@
”的实例替换为“elbow
”"
”)替换双引号“'
”的实例%
”的实例替换为“shoulder
”我知道Groovy会是这样的:
myDog.getUUID().replaceAll("[@|\"|%]+", ???);
但是我无法弄清楚如何做所有3个内联,以及它们的实际正则值应该是什么。
如果可能的话,我希望它是一个replace
命令,而不是3个单独的命令,但如果单个命令不可能,我将进行3次单独替换。提前谢谢!
答案 0 :(得分:2)
您可以将replace
方法链接在一起
uuid = uuid.replace("@", "elbow").replace("\"", "'").replace("%", "shoulder");
答案 1 :(得分:2)
使用map +正则表达式:
subs = [
'@': 'elbow',
'"': "'",
'%': 'shoulder'
]
uuid = 'a @ b % c " d';
uuid.replaceAll(/[@"%]/, { subs[it[0]] })
// ===> a elbow b shoulder c ' d
注意强>
|
内不需要[]
。如果存在,|
也匹配。答案 2 :(得分:1)
你不必使用正则表达式:do:
string str = dog.uuid.replace("@", "elbow");
str = str.replace("%", "shoulder");
str = str.replace("%", "shoulder");
str = str.replace("\"", "\'");
dog.uuid = str;
我们使用格式"\""
,因此编译器不会在字符串中的quates和字符串的边界之间混淆