为什么三引号字符串内的"1"计算结果为 Unicode 0x1码位



我想要一个包含文本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
/

相关内容

  • 没有找到相关文章

最新更新