是否有可能做的事:
"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""
但没有任何帮助
您可以双逃离美元符号:
"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
首先,你必须因为现在它是为正则表达式的一部分处理逃跑美元字符(结束的串号) :
"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 $