【发布时间】:2013-05-09 06:51:50
【问题描述】:
我有一个包含(非 Scala)转义序列的输入字符串,例如 \n、\s、\x20ac; 和 \{$var}。我想通过将普通字符复制到输出来创建输出字符串,并对每个转义序列应用一些处理,将处理结果复制到输出。处理转义序列和检测它的结束位置的规则都只取决于反斜杠后立即出现的字符。
在 Scala 中实现此目的的惯用方式是什么?
【问题讨论】:
标签: scala
我有一个包含(非 Scala)转义序列的输入字符串,例如 \n、\s、\x20ac; 和 \{$var}。我想通过将普通字符复制到输出来创建输出字符串,并对每个转义序列应用一些处理,将处理结果复制到输出。处理转义序列和检测它的结束位置的规则都只取决于反斜杠后立即出现的字符。
在 Scala 中实现此目的的惯用方式是什么?
【问题讨论】:
标签: scala
这个怎么样:
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.
)
看看Regex
你甚至可以更进一步,使用漂亮的模式匹配:
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 _)
【讨论】: