Groovy中取代许多标记的最有效方法

我有n字符串中的随机标记,我想用闭包来用方法的返回值替换每个值。Groovy中取代许多标记的最有效方法

例如

字符串theString = “你好,这是\ $ randomEmail,这是一个兰特 字符串:\ $ randomString,这是一个随机\ $ randomTelephoneNumber”

然后我想做些什么是基于roke调用每个适用的方法来用实际值替换该字符串 - 例如对于电子邮件地址令牌($ randomEmail),那么我想调用以下方法;

String randomEmailAddress() { 

return new StringBuilder(RandomStringUtils.random(6)).append("@").append(RandomStringUtils.random(6)).append(".com").toString();

}

希望能使用闭包的字符串替换上的下一步功能,但有点卡住..

Map<String,Closure> randomStrings = [randomEmail:{randomEmailAddress()},randomUserName:{randomString(8),randomTelephoneNumber:{randPhoneNumber()}}] 

然后调用的字符串替换功能,在依次每个令牌被替换正确的随机值。

注意:我需要操作很多基本字符串(该示例仅显示其中的一个),并且我可能或可能不具有映射(模型)中文件中存在的所有值一次。

我知道我可以用if语句做到这一点,但是打败了学习闭包的目的:-)。

在此先感谢,

伊恩。

回答:

您可以使用Groovy Templates:

import groovy.text.SimpleTemplateEngine 

// single quotes are important here, this needs to be a string, not a gstring.

String template = 'Hi, this is $randomEmail and this is a random username: $randomUserName'

Map model = [

randomEmail: { -> randomEmailAddress() },

randomUserName: { -> randomUserName() }

]

String result = new SimpleTemplateEngine().createTemplate(template)

.make(model).toString()

以上是 Groovy中取代许多标记的最有效方法 的全部内容, 来源链接: utcz.com/qa/266575.html

回到顶部