斯卡拉字符串,原始字符串(scala string, raw string)

2019-10-18 00:07发布

是否有可能做的事:

"hello, I have 65 dollars".replaceFirst("65", "$")

目前的结果是

 scala> "hello, I have 65 dollars".replaceFirst("dollars", "$")
 java.lang.StringIndexOutOfBoundsException: String index out of range: 1
 ....

预期的结果在斯卡拉2.10:

 hello, I have 65 $

问题是符号$ ,我需要处理它作为字符串不是正则表达式。 我试图把它变成""" ,或raw""但没有任何帮助

Answer 1:

您可以双逃离美元符号:

"hello, I have 65 dollars".replaceFirst("dollars", "\\$")

或者使用Scala的三重引号和单逃逸。

"hello, I have 65 dollars".replaceFirst("dollars", """\$""")

无论哪种方式,你需要结束了一个字符串等于“\ $”用反斜杠逃离美元。

编辑

我不知道你想要的“$ 65” - 不是“$ 65”更好的格式? 为此,您需要一个捕获组和反向引用

"hello, I have 65 dollars".replaceFirst("""(\d++)\s++dollars""","""\$$1""");

输出:

res3: java.lang.String = hello, I have $65


Answer 2:

首先,你必须因为现在它是为正则表达式的一部分处理逃跑美元字符(结束的串号) :

"hello, I have 65 dollars".replaceFirst("65", "\\$")
res0: String = hello, I have $ dollars

它更可能你想更换“元”字:

scala> "hello, I have 65 dollars".replaceFirst("dollars", "\\$")
res1: String = hello, I have 65 $


文章来源: scala string, raw string