Mike R
Mike R

Reputation: 4538

Groovy: How can I include backslashes inside a string without escaping?

I want to use the following string literal inside my groovy program without having to escape the backslashes:

C:\dev\username

Here is what I have tried so far:

String (Single Quotes) & GStrings (Double Quotes)

def aString = 'C:\dev\username'
def aGString = "C:\dev\username"
def s = 'C:\\dev\\username'

Slashy String & Dollar Slashy String

Works for some strings, like the following

def slashy = /C:\windows\system32/
def dollarSlashy = $/C:\windows\system32/$

But it interprets \u as having special meaning (the following don't work):

def s1 = /C:\dev\username/
def s2 = $/C:\dev\username/$

Upvotes: 31

Views: 48922

Answers (1)

bdkosher
bdkosher

Reputation: 5883

Wow, another gotcha with putting Windows files paths in slashy strings. Nice catch. The gotcha I've encountered before was including a trailing backslash on the path, e.g. /C:\path\/, which results in an unexpected char: 0xFFFF error.

Anyways, for the sake of an answer, given that Windows paths are case insensitive, why not exploit it for once?

def s = /C:\DEV\USERNAME/

The \u unicode character escape sequence is case sensitive.

Upvotes: 15

Related Questions