替换所有无效的转义字符

时间:2014-07-01 09:58:02

标签: scala

scala StringContext存在invlaid转义字符问题。例如:

s"""v \C/R\ni"""

引发" scala.StringContext $ InvalidEscapeException:索引2"处的转义字符无效。 http://www.scala-lang.org/api/current/index.html#scala.StringContext $$ InvalidEscapeException

是否有一种优雅且通用的方法来避免这个问题?特别是应保留有效转义字符。可能是:

s"""v \\C/R\ni"""

仅供参考:我将这些字符串传递给scala解释器,因此可以准备字符串。

使用\ *进行缩放替换*但不会使用chapter 1.3.6进行替换*。 任何聪明的想法?

(我使用scala 2.11.x)

1 个答案:

答案 0 :(得分:0)

我现在的解决方案:

val regex = "\\\\[^btnfr\"]".r
var str = """hi \C ho \t jo \n \" mu \M"""
val matches = regex.findAllIn(str).toList
val chars = matches.map(_(1))
for ( (x,y) <- matches zip chars) str = str.replace(x, "\\\\" + y)

输出为“”“hi \ C ho \ t jo \ n \”mu \ M“”“。 不是很优雅,但它的工作原理。也许有人有一个更好,更“功能”的解决方案?