unicode转义中的Scala原始字符串错误

elm*_*elm 5 string unicode scala unicode-escapes

在Scala字符串中需要包含这个文字的逐字:\usepackage{x}.因此,期望的是

val s = """ ... \usepackage{X} ... """

println(s)
... \usepackage{X} ...
Run Code Online (Sandbox Code Playgroud)

到目前为止的尝试包括,

scala> """\usepackage{X}"""
<console>:1: error: error in unicode escape
       """\usepackage{X}"""
            ^

scala> raw"""\usepackage{X}"""
<console>:1: error: error in unicode escape
       raw"""\usepackage{X}"""
               ^
Run Code Online (Sandbox Code Playgroud)

单双引号字符串也证明不成功.

http://docs.scala-lang.org/overviews/core/string-interpolation.html之后,一个工作示例包括

scala> raw"a\nb"
res1: String = a\nb
Run Code Online (Sandbox Code Playgroud)

这不包括unicode案件.

izs*_*tas 10

您似乎面临问题SI-4706:Unicode文字语法阻碍了三引号的常见用例.

在Scala中,unicode转义序列不仅在字符或字符串文字内处理.以下代码可能不起作用:

scala> 5 \u002B 10
res0: Int = 15
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果您不想完全禁用unicode转义(-Xno-uescape),似乎没有一个好方法.该问题中提出的解决方法之一是分离反斜杠字符:

scala> """\""" + """usepackage{X}"""
res1: String = \usepackage{X}
Run Code Online (Sandbox Code Playgroud)