データベースから文字列を読み込み、プレースホルダをGStringに変換して置き換えたいとします。 Evalでこれを行うことはできますか?他のアイデア?StringをGStringに変換してGroovyのプレースホルダを置き換えるにはどうすればいいですか?
String stringFromDatabase = 'Hello ${name}!'
String name = 'world'
assert 'Hello world!'== TODO
データベースから文字列を読み込み、プレースホルダをGStringに変換して置き換えたいとします。 Evalでこれを行うことはできますか?他のアイデア?StringをGStringに変換してGroovyのプレースホルダを置き換えるにはどうすればいいですか?
String stringFromDatabase = 'Hello ${name}!'
String name = 'world'
assert 'Hello world!'== TODO
プレースホルダを使用する場合は、二重引用符で囲んだ文字列リテラルを使用する必要があります。
次は動作するはずです:
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()
あなたがここにドキュメントを見つけることができます:
これは機能しています。しかし、私のstringFromDatabaseは、データベースからオブジェクトを読み取って文字列を生成することによって作成されます。 –
疑似コード: 'def templateFromDatabase = Template.get(123); def stringFromDatabase = templateFromDatabase.source; アサートstringFromDatabase instanceof文字列。 // true ... TODO' –
あなたはので、これはあなたの問題を解決してやって、Groovyでのテンプレートフレームワークを使用することができますhttp://docs.groovy-lang.org/latest/html/documentation/template-engines.html#_introduction
Gストリングクラスは抽象的である、とのGStringImpl実装抽象クラスは文字列の配列に作用し、構文解析フェーズから値とともに得られます。
http://stackoverflow.com/questions/36805214/evaluating-value-of-an-expression-as-expression-in-groovy/36806883#36806883 –