我想要一个包含文字\1
的字符串。
我做的是(真正的字符串更长,但并不重要):
'''
\1
'''
导致包含unicode 0x1
代码点的String。
我认为我应该做的就是逃避这样的反斜杠:
'''
\\1
'''
我不明白为什么Groovy没有在这里报告错误。我认为unicode转义是supposed to look like \u1
?
当我尝试将此String放入XML元素时,我得到了运行时异常,而不是语法错误:
An invalid XML character (Unicode: 0x1) was found in the element content of the document.
答案 0 :(得分:2)
\
(反斜杠)符号为escape symbol。如果你的意思是按字面意思使用它,你必须自己逃避它:\\
。
当您转义任何字符时,该字符被解释为具有特殊含义。在\1
序列的情况下,恰好可以将其解释为0x01
代码点。
Java Strings中也是如此。
如果您不想在Groovy中转义字符,请使用slashy strings:
def x = /\1/
assert x == "\\1"
也可以作为多线:
def x = /
\1
/