2016-05-22 7 views
7

データベースから文字列を読み込み、プレースホルダをGStringに変換して置き換えたいとします。 Evalでこれを行うことはできますか?他のアイデア?StringをGStringに変換してGroovyのプレースホルダを置き換えるにはどうすればいいですか?

String stringFromDatabase = 'Hello ${name}!' 
String name = 'world' 

assert 'Hello world!'== TODO 
+0

http://stackoverflow.com/questions/36805214/evaluating-value-of-an-expression-as-expression-in-groovy/36806883#36806883 –

答えて

0

プレースホルダを使用する場合は、二重引用符で囲んだ文字列リテラルを使用する必要があります。

次は動作するはずです:

String name = 'world' 
String stringFromDatabase = "Hello ${name}!" //use double quotes 

assert 'Hello world!' == stringFromDatabase 

は、あなたがこの作品を作ることができる他の方法を見てofficial Groovy documentation about Stringsを参照してください。

String stringFromDatabase = 'Hello ${name}!' 
String name = 'world' 

def engine = new groovy.text.SimpleTemplateEngine() 
assert 'Hello world!'== engine.createTemplate(stringFromDatabase).make([name:name]).toString() 

あなたがここにドキュメントを見つけることができます:

+0

これは機能しています。しかし、私のstringFromDatabaseは、データベースからオブジェクトを読み取って文字列を生成することによって作成されます。 –

+0

疑似コード: 'def templateFromDatabase = Template.get(123); def stringFromDatabase = templateFromDatabase.source; アサートstringFromDatabase instanceof文字列。 // true ... TODO' –

関連する問題