Groovy 美元符号后的非法字符串体字符

Groovy 美元符号后的非法字符串体字符,groovy,Groovy,如果我定义一个groovy变量 def x = "anish$" 这会给我带来错误,解决方法是 def x = "anish\$" 除了“$”表之外,需要反斜杠的黑名单字符有哪些,是否有列出保留字符的Groovy引用。大多数“语言规范”都提到这些细节,但我在Groovy语言中看不到这些细节(许多“TODO”注释) 只需使用单引号: def x = 'anish$' 如果这是不可能的,那么唯一会给您带来问题的就是$,因为这是GString使用的模板字符(请参阅GString部分--大约一半)

如果我定义一个groovy变量

def x = "anish$"
这会给我带来错误,解决方法是

def x = "anish\$"

除了“$”表之外,需要反斜杠的黑名单字符有哪些,是否有列出保留字符的Groovy引用。大多数“语言规范”都提到这些细节,但我在Groovy语言中看不到这些细节(许多“TODO”注释)

只需使用单引号:

def x = 'anish$'
如果这是不可能的,那么唯一会给您带来问题的就是
$
,因为这是
GString
使用的模板字符(请参阅GString部分--大约一半)

显然,反斜杠字符也需要转义,即:

def x = 'anish\\'
tim_yates的解决方案在某些情况下不起作用,例如在Jasper报告中。 因此,如果仍然使用
$
符号的所有内容都希望被解释为某个变量(
${varX}
),例如

"xyz".replaceAll("^(.{4}).{3}.+$", "$1...")
然后,只需将美元符号设置为单个串联字符
“$”
,例如

"xyz".replaceAll("^(.{4}).{3}.+"+'$', '$'+"1...")

可以使用八进制表示法。字符$以八进制表示044,然后:

def x='anish\044'


def x='anish\044'

例如,在Java中,我确实这样使用:

def x='anish\044'


如果你想知道其他的字母或符号转换器,:)

这可能是一个便宜的方法,但下面的方法对我很有用

def x = "anish" + '$'

因此,唯一的保留字是$,它被用作模板的标记,因此如果您使用
(表示您要使用模板)是的,
$
将需要转义…如果您在java中使用单引号
'
您不需要转义ITA,反斜杠需要转义,因为它们是转义字符…更新了我的答案。那么我如何在变量反斜杠中定义,这根本不可能吗?您甚至不能在Groovy Jasper表达式中使用
'xy'
我更喜欢这个解决方案,因为我在groovy脚本中使用传统的java代码。我可以将Eclipse中的java文件中的代码复制并粘贴到groovy脚本中,而不用担心java语法和groovy语法之间的任何差异。