在Scala字符串中需要包含此文字逐字:\usepackage{x}
。因此,期望的是
val s = """ ... \usepackage{X} ... """
println(s)
... \usepackage{X} ...
到目前为止的尝试包括,
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}"""
^
单双引号字符串也证明不成功。
关注http://docs.scala-lang.org/overviews/core/string-interpolation.html,一个工作示例包括
scala> raw"a\nb"
res1: String = a\nb
不包括unicode案例。
答案 0 :(得分:10)
您似乎面临问题SI-4706: Unicode literal syntax thwarts common use cases for triple-quotes。
在Scala中,unicode转义序列不仅在字符或字符串文字内处理。以下代码可能不太明显:
scala> 5 \u002B 10
res0: Int = 15
不幸的是,如果您不想完全禁用unicode转义(-Xno-uescape
),那么这似乎并不是一个好方法。该问题中提出的解决方法之一是分离反斜杠字符:
scala> """\""" + """usepackage{X}"""
res1: String = \usepackage{X}