2014-09-24 46 views
3

我现在有一个资产管理代码固定的格式,使用美元符号,它使用Groovy的字符串格式:有没有办法在变量中声明一个Groovy字符串格式?

def code = "ITN${departmentNumber}${randomString}" 

将产生,看起来这样的代码:

ITN120AHKXNMUHKL

但是,我有一个新的要求,即代码格式必须是可定制的。我想通过允许用户设置自定义格式字符串,如以公开此功能:

OCP $ {} departmentNumber十一$ {} randomString

PAN - $ {} randomString

将输出:

OCP125XIBQHNKLAPICH

PAN-XJKLBPPJKLXHNJ

哪个Groovy将解释并替换为适当的变量值。这是可能的,还是我必须手动解析占位符并手动执行string.replace?

+0

可能的问题是我也不清楚,但是你问了能在Groovy完成。你可以尝试一个示例脚本?我认为你会得到你的答案在样本上工作。 – dmahapatro 2014-09-24 21:53:49

+0

我_think_他希望“用户”输入一个GString,然后进行评估。 – cfrick 2014-09-24 22:06:33

+0

为什么不使用'String.format()'或'MessageFormat.format()'并让用户选择模式? – 2014-09-24 22:35:16

回答

4

是否GString lazy evaluation(更新后的链接)是否符合法案?

deptNum = "C001" 
randomStr = "wot" 

def code = "ITN${deptNum}${->randomStr}" 

assert code == "ITNC001wot" 

randomStr = "qwop" 

assert code == "ITNC001qwop" 
+0

GString懒惰评估链接已死 – ablarg 2017-05-16 17:00:32

+0

@ablarg固定,谢谢 – Will 2017-05-16 17:42:54

1

Triple double quoted string

def password = "30+" 

def authRequestBody = """ 
<dto:authTokenRequestDto xmlns:dto="dto.client.auth.soft.com"> 
    <login>[email protected]</login> 
    <password>${password}</password> 
</dto:authTokenRequestDto> 
""" 
相关问题