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

时间:2011-11-01 14:23:54

标签: groovy

如果我定义一个groovy变量

def x = "anish$"

它会给我带来错误,修复是

def x = "anish\$"

除了“$”之外什么是需要反斜杠的黑名单字符,是否有一个列出保留字符的Groovy引用。大多数“语言规范”都提到了这些细节,但我没有在Groovy语言spec中看到它(许多“TODO”评论)。

4 个答案:

答案 0 :(得分:27)

只需使用单引号:

def x = 'anish$'

如果这是不可能的,那么唯一会导致问题的是$,因为这是GString使用的模板字符(参见GString部分on this page - - 大约一半下来)

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

def x = 'anish\\'

答案 1 :(得分:8)

您可以使用八进制表示。字符$表示八进制的044,然后:
def x = 'anish\044'


def x = 'anish\044'

例如,在Java中,我确实使用了这样的:
def x = 'anish\044'

答案 2 :(得分:2)

来自 tim_yates 的解决方案在某些情况下不起作用,例如:在贾斯珀的报告中。 因此,如果具有$符号的所有内容仍然需要被解释为某个变量(${varX}),例如在

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

然后只需将美元符号设为单个连续字符'$' ,例如

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

答案 3 :(得分:2)

这可能是一种便宜的方法,但以下内容适用于我。

def x = "anish" + '$'