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