在 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 http://docs.scala-lang.org/overviews/core/string-interpolation.html,一个工作示例包括
scala> raw"a\nb"
res1: String = a\nb
其中不包括 unicode 情况。
您似乎遇到了问题SI-4706:Unicode 文字语法阻碍了三引号的常见用例 https://issues.scala-lang.org/browse/SI-4706.
在 Scala 中,unicode 转义序列不仅在字符或字符串文字内部进行处理。以下代码是否有效可能并不明显:
scala> 5 \u002B 10
res0: Int = 15
不幸的是,如果您不想完全禁用 unicode 转义,似乎没有一个好的方法来解决这个问题(-Xno-uescape
,仅在 Scala 2.13.1 之前可用,请参阅PR #8282 https://github.com/scala/scala/pull/8282 and ee8c1ef8 https://github.com/scala/scala/commit/ee8c1ef8f1e712542b9d5fe01bc5cea21e0227c1).
SI-4706 问题中建议的解决方法之一是分隔反斜杠字符:
scala> """\""" + """usepackage{X}"""
res1: String = \usepackage{X}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)