我得到一个奇怪的错误,下面的代码。字符串插值奇怪的错误
我有一个类Example
,有一个伴侣对象,其中我定义了一个字符串SIGN
。在类Example
我有一个方法,我创建一个正则表达式,我使用字符串插值,以便我可以使用SIGN
来建立我的正则表达式。
这编译,但我在运行时得到一个奇怪的错误。这是一个斯卡拉错误?我正在使用Scala 2.10.3(在Windows 7上)。
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Example {
import Example._
def regex = s"""$SIGN?\d+""".r
}
object Example {
private val SIGN = """(\+|-)"""
}
// Exiting paste mode, now interpreting.
defined class Example
defined module Example
scala> val e = new Example
e: Example = [email protected]
scala> e.regex
scala.StringContext$InvalidEscapeException: invalid escape character at index 1 in "?\d+"
at scala.StringContext$.treatEscapes(StringContext.scala:229)
at scala.StringContext$$anonfun$s$1.apply(StringContext.scala:90)
at scala.StringContext$$anonfun$s$1.apply(StringContext.scala:90)
at scala.StringContext.standardInterpolator(StringContext.scala:123)
at scala.StringContext.s(StringContext.scala:90)
at Example.regex(<console>:9)
@ raina77ow这也行不通,我得到同样的例外。 – Jesper
看起来你看到[本期]的某个版本(https://issues.scala-lang.org/browse/SI-6476),也许?简单的旧的“$ SIGN?\\ d +”。r'应该可以正常工作。 –
是的,它适用于\\\'。 – raina77ow