2017-06-14 7 views
0

Dies funktioniert nicht: r n Ersetzen mit n

scala> """one\r\ntwo\r\nthree\r\nfour""".replace("\r\n", "\n") 
res1: String = one\r\ntwo\r\nthree\r\nfour 

Wie die in Scala tun?

Gibt es einen eher idiomatischen Weg, anstatt Ersatz zu verwenden?

+1

'" "" \ r \ n "" "' ist sehr verschieden von '" \ r \ n "'. –

+0

@ n.m. Yepp, ich habe es gerade bemerkt. Ich akzeptiere das als Antwort – dangonfast

Antwort

0

Das Problem ist, dass """ Anführungszeichen nicht Escape-Sequenzen erweitert. Drei verschiedene Ansätze:

  1. Verwenden einzelne " Anführungszeichen, um Sequenzen zu behandeln zu entkommen richtig: "one\r\ntwo";
  2. Verwenden Sie den s Zeicheninterpolator, achten Sie darauf, dass dies zu unerwarteten Ersetzungen führt: s"""one\r\ntwo""";
  3. Rufen Sie treatEscapes direkt an, um die Escape-Sequenzen in Ihrer Zeichenfolge zu erweitern: StringContext.treatEscapes("""one\r\ntwo""").

Siehe auch this earlier question.

0

versuchen diese

"""one\r\ntwo\r\nthree\r\nfour""".replace("\\r\\n", "\n") 

\ als escape charater innerhalb Zeichenfolge behandelt wird, so müssen Sie die compiler, dass ihr kein escape Charakter, sondern ein string erzählen.

+0

war die Antwort hilfreich? –