1

それは可能ですか:

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

現在の結果は

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

scala 2.10 で期待される結果:

 hello, I have 65 $

問題は symbol$にあります。正規表現ではなく文字列として処理する必要があります。"""またはに入れようとしましたraw""が、何も役に立ちませんでした

4

2 に答える 2

6

ドル記号を二重にエスケープできます。

"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
于 2013-04-09T09:51:12.407 に答える
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 $
于 2013-04-09T09:50:00.490 に答える