我有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語句做到這一點,但是打敗了學習閉包的目的:-)。
在此先感謝,
伊恩。
我認爲字符串不能改變?即:'def theString =「嗨,這是$ {randomEmail()},這是一個rand字符串:$ {randomString()},這是一個隨機$ {randomTelephoneNumber()}」'是不可能的? –
編號它正在從外部文件中讀取(爲簡單起見,我將其內插),但智能方法永遠不會少... – Ian