Scala 将stringLiteral转换为字符串

Scala 将stringLiteral转换为字符串,scala,Scala,在Scala的解析器组合器(JavaTokensParser尤其如此)中,有一个定义stringLiteral,它与类似Java的字符串相匹配。有没有办法将stringLiteral转换为String?例如,如果我分析“Run\”Run\\Run“,我希望将输入的字符串文字转换为Run“Run\Run 另外,是否有一个同样支持“”的StringLiteral定义?我有一种预感,你在问一个更复杂的问题,但以防万一,简单的答案是编写你自己的解析器并在应用程序后面修剪引号,^^^ 在REPL中,您可以

在Scala的解析器组合器(
JavaTokensParser
尤其如此)中,有一个定义
stringLiteral
,它与类似Java的字符串相匹配。有没有办法将
stringLiteral
转换为
String
?例如,如果我分析
“Run\”Run\\Run“
,我希望将输入的字符串文字转换为
Run“Run\Run


另外,是否有一个同样支持
”的StringLiteral定义?

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

在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"""")

我不知道有任何内置的三引号解析器,所以我想你必须自己使用。

Apache Commons提供了一个有用的方法:。

这不处理字符转义。由于缺少答案,听起来好像没有内置的,这是一个遗憾。