Groovy:如何在不转义的情况下在字符串中包含反斜杠?

Mik*_*e R 19 string scripting groovy

我想在我的groovy程序中使用以下字符串文字,而不必转义反斜杠:

C:\dev\username

这是我到目前为止所尝试的:

字符串(单引号)和GStrings(双引号)

def aString = 'C:\dev\username'
def aGString = "C:\dev\username"
  • 不起作用,因为\具有特殊含义,用于转义其他字符
  • 我最终不得不逃避\另一个\
def s = 'C:\\dev\\username'

Slashy String&Dollar Slashy String

适用于某些字符串,如下所示

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

但它解释\ u具有特殊含义(以下不起作用):

def s1 = /C:\dev\username/
def s2 = $/C:\dev\username/$
  • Groovy:没有找到四位十六进制字符代码

bdk*_*her 11

哇,另一个把Windows文件路径放在斜线字符串中的问题.很好的抓住.我之前遇到过的问题是在路径上包含一个尾随反斜杠,例如/C:\path\/导致unexpected char: 0xFFFF错误.

无论如何,为了答案,鉴于Windows路径不区分大小写,为什么不一次利用它?

def s = /C:\DEV\USERNAME/
Run Code Online (Sandbox Code Playgroud)

\uUnicode字符转义序列区分大小写的.

  • 从Groovy`2.4.10`开始,"意外的char:0xFFFF"错误仍然存​​在问题.使用美元slashy字符串修复问题ala` $/C:\ Path\To\Some\Place\/ $` (4认同)
  • 默认情况下,Windows路径配置为不区分大小写,但它们不是(即从不)不知情的情况.因此,如果想要*创建一个名为"username"的目录,那么你必须*使用小写的"...\username". (2认同)