For a GString, the strings property contains the static parts and the values property contains the expressions.
def name = 'world' def gstr = "Hello, $name!" assert gstr.strings[0] == 'Hello, ' assert gstr.strings[1] == '!' assert gstr.values[0] == 'world' assert gstr.toString() == 'Hello, world!' Your code is just concatenating the static parts. You can just use the toString() value or in general if you wanted to concatenate by hand strings[0] + values[0] + strings[1] + values[1] + strings[2] + values[2] + strings[3] and so forth for as many terms as needed. Another example: def gstr = "foo ${1+1} bar ${'w' * 3} baz" assert gstr.strings == ['foo ', ' bar ', ' baz'] assert gstr.values == [2, 'www'] assert gstr.toString() == 'foo 2 bar www baz' On Wed, Sep 27, 2023 at 9:45 PM Jochen Wiedmann <joc...@apache.org> wrote: > > > Hi, Paul, > > could you, please, explain what you mean? I really have no idea, what you > mean. > > Thanks, > > Jochen > > > On 2023/09/25 15:07:28 Paul King wrote: > > You'd need to interleave the values from the GString. > > > > On Tue, Sep 26, 2023 at 12:43 AM Jochen Wiedmann > > <jochen.wiedm...@gmail.com> wrote: > > > > > > Hi, > > > > > > can anyone advise me, what is wrong with the following code: I'd > > > expect it to write out the word "Okay". Instead, it throws the > > > exception "Unexpected result: Hello, !" > > > > > > final String scriptStr = "return \"Hello, $name!\";"; > > > final GroovyShell gs = new GroovyShell(); > > > final Script script = gs.parse(new StringReader(scriptStr)); > > > > > > final Binding binding = new Binding(); > > > binding.setProperty("name", "world"); > > > script.setBinding(binding); > > > > > > final GStringImpl gsi = (GStringImpl) script.run(); > > > final String[] gsArray = gsi.getStrings(); > > > final String result; > > > > > > if (gsArray == null || gsArray.length == 0) { > > > result = null; > > > } else { > > > result = String.join("", gsArray); > > > } > > > > > > if (!"Hello, world!".equals(result)) { > > > throw new IllegalStateException("Unexpected result: " + result); > > > } > > > System.out.println("Okay."); > > > > > > > > > > > > -- > > > The woman was born in a full-blown thunderstorm. She probably told it > > > to be quiet. It probably did. (Robert Jordan, Winter's heart) > >