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