1

我想要一个包含 text 的字符串\1

我所做的是(真正的字符串更长,但并不重要):

'''
 \1
'''

这导致了一个包含 unicode 代码点的字符串0x1

我认为我应该做的就是像这样逃避反斜杠:

'''
 \\1
'''

我不明白的是为什么 Groovy 没有在这里报错。我认为 unicode 转义应该看起来像\u1

当我尝试将此字符串放入 XML 元素时,我得到了运行时异常,而不是语法错误:

An invalid XML character (Unicode: 0x1) was found in the element content of the document.
4

1 回答 1

2

\反斜杠)符号是转义符号。如果您打算按字面意思使用它,则必须将其本身转义:\\.

当您转义任何字符时,该字符被解释为具有特殊含义。在\1序列的情况下,恰好可以将其解释为0x01代码点。

这在 Java 字符串中也是一样的。

如果您不想在 Groovy 中转义字符,请使用斜线字符串

def x = /\1/
assert x == "\\1"

它也可以作为多行:

def x = /
\1
/
于 2016-05-15T12:14:10.163 回答