1

在 Scala 的解析器组合JavaTokensParser器中(特别是),有一个stringLiteral与类似 Java 的字符串匹配的定义。有没有办法将 a 转换stringLiteral为 a String?例如,如果我解析"Run \" run \\ run"我想将输入的字符串文字转换为Run " run \ run.

另外,是否有 stringLiterals 的定义也支持"""

4

2 回答 2

0

Apache Commons 提供了一个有用的方法:StringEscapeUtils.escapeJava

于 2013-09-26T16:47:53.093 回答
0

我有预感你在问一个更复杂的问题,但以防万一简单的答案是编写你自己的解析器并在应用程序之后修剪引号,^^。

在 REPL 中,您可以像这样测试它:

import scala.util.parsing.combinator.JavaTokenParsers

object testParsers extends JavaTokenParsers {

  val aString : Parser[String] = stringLiteral ^^ { 
    case s => s.substring( 1, s.length-1 ) 
  }
}

testParsers.parseAll(testParsers.stringLiteral,""""Run \" run \\ run"""")
testParsers.parseAll(testParsers.aString,""""Run \" run \\ run"""")

我不知道有任何内置的三引号解析器,所以我猜你将不得不自己动手。

于 2013-09-24T16:46:25.023 回答