Scala 将stringLiteral转换为字符串
在Scala的解析器组合器(Scala 将stringLiteral转换为字符串,scala,Scala,在Scala的解析器组合器(JavaTokensParser尤其如此)中,有一个定义stringLiteral,它与类似Java的字符串相匹配。有没有办法将stringLiteral转换为String?例如,如果我分析“Run\”Run\\Run“,我希望将输入的字符串文字转换为Run“Run\Run 另外,是否有一个同样支持“”的StringLiteral定义?我有一种预感,你在问一个更复杂的问题,但以防万一,简单的答案是编写你自己的解析器并在应用程序后面修剪引号,^^^ 在REPL中,您可以
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提供了一个有用的方法:。这不处理字符转义。由于缺少答案,听起来好像没有内置的,这是一个遗憾。