2

我有一个输入字符串,其中包含(非 Scala)转义序列,例如\n,和. 我想通过将普通字符复制到输出来创建输出字符串,并对每个转义序列进行一些处理,将处理结果复制到输出。处理转义序列和检测其结束位置的规则都仅取决于反斜杠之后立即出现的字符。\s\x20ac;\{$var}

在 Scala 中实现这一目标的惯用方法是什么?

4

1 回答 1

5

这个怎么样:

val r = """\\[ns]|\\x[a-f0-9]{4};|\\\{\$[a-z][a-z_0-9]+\}""".r
val result = r.replaceAllIn(targetString, m =>
  // your logic. `m` is a Match. Use it to decide what to replace with.
)

看看正则表达式

你甚至可以更进一步,使用漂亮的模式匹配:

import scala.util.matching.Regex.Match
def handle(m: Match) = m match {
  case Match("""\n""") => // do stuff
  case _ => // etc.
}

val result = r.replaceAllIn(targetString, handle _)
于 2013-05-08T22:44:11.953 回答