groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David M. Karr" <>
Subject Re: Escaping unicode reference in slashy string
Date Tue, 09 Feb 2016 02:08:14 GMT
On 02/08/2016 05:40 PM, Paul King wrote:
> Unicode processing is done before anything else. For your case, you
> need to make it not look like a unicode sequence - which you rightly
> did with the double backslash variant. But you then need to pick the
> GString form that does the appropriate thing with the sequence of
> characters that passed through the initial parsing stages. So the
> trick is to use a normal GString not a slashy string:
> def var = "c:\\uabc.txt"

I can see it can get complicated to select the correct form, depending 
on problematic characters in the string.  Is there anything like the 
Perl "qw()" function, which I believe augments a string with any 
required quoting to retain all the original characters?
> Cheers, Paul.
> On Tue, Feb 9, 2016 at 8:17 AM, David M. Karr
> <> wrote:
>> Someone was trying to point out difficulties with various string values in
>> slashy strings.  I was able to refute most of his arguments, but he pointed
>> out a curious issue involving unicode sequences.
>> If you have the following:
>> --------------
>> def var = /c:\uabc.txt/
>> ---------------
>> This will fail to compile, as "\uabc." is not a valid unicode sequence.
>> So, the obvious thing to try is this:
>> ------------------
>> def var = /c:\\uabc.txt/
>> ------------------
>> That would fix it, right?  Well, sort of.  It doesn't get a compile error.
>> I expected it to produce "c:\uabc.txt", but instead it produced
>> "c:\\uabc.txt".
>> What are relatively simple workarounds for this?

View raw message