2014-09-24 72 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> 
""" 
相關問題