将stringLiteral转换为字符串

时间:2013-09-24 14:31:25

标签: scala

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

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

2 个答案:

答案 0 :(得分: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"""")

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

答案 1 :(得分:0)

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