代码之家  ›  专栏  ›  技术社区  ›  Greg

如何防止Scala中的转义字符替换[[副本]

  •  0
  • Greg  · 技术社区  · 6 年前

    \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 年前
        1
  •  10
  •   izstas    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}