0

我有一个 POJO:

public class Dog {
    String uuid;

    // ...etc.
}

我想写一个简单的 Groovy 表达式,uuid用其他字符/字符串替换字符串字段中某些字符的实例,特别是:

  • @用单词“ elbow”替换“”的实例
  • "用单引号 (" '")替换双引号 " " 的实例
  • %用单词“ shoulder”替换“”的实例

我知道 Groovy 会是这样的:

myDog.getUUID().replaceAll("[@|\"|%]+", ???);

但我不知道如何做所有 3 个内联,以及它们的实际正则表达式应该是什么。

如果可能的话,我希望它是一个replace命令而不是 3 个单独的命令,但如果一个命令是不可能的,我将进行 3 个单独的替换。提前致谢!

4

3 回答 3

2

您可以将replace方法链接在一起

uuid = uuid.replace("@", "elbow").replace("\"", "'").replace("%", "shoulder");
于 2013-09-06T11:48:40.070 回答
2

Usign映射+正则表达式:

subs = [
    '@': 'elbow',
    '"': "'",
    '%': 'shoulder'
]
uuid = 'a @ b % c " d';
uuid.replaceAll(/[@"%]/, { subs[it[0]] })
// ===> a elbow b shoulder c ' d

笔记

  • 你不需要|里面[]。如果存在,|也匹配。
于 2013-09-06T11:50:21.057 回答
1

你不必为此使用正则表达式:做:

string str = dog.uuid.replace("@", "elbow");
str = str.replace("%", "shoulder");
str = str.replace("%", "shoulder");
str = str.replace("\"", "\'");
dog.uuid = str;

我们正在使用该格式"\"",因此编译器不会混淆字符串中的 quates 和字符串的边界

于 2013-09-06T11:52:15.003 回答