In scala "hier docs" wird beginnen und enden in 3 "
Wie Ausgang auf ""“im "hier docs" von scala?
val str = """Hi,everyone"""
Aber was, wenn die Zeichenfolge enthält die """
? Wie Ausgang Hi,"""everyone
?
In scala "hier docs" wird beginnen und enden in 3 "
Wie Ausgang auf ""“im "hier docs" von scala?
val str = """Hi,everyone"""
Aber was, wenn die Zeichenfolge enthält die """
? Wie Ausgang Hi,"""everyone
?
Da Unicode über \u0022
in mehrzeiligen Stringliterale Flucht wird nicht helfen Sie, weil sie als die gleichen drei Angebote bewertet werden würde, ist Ihre einzige Chance, wie so zu verketten ist:
"""Hi, """+"""""""""+"""everyone"""
die gute Sache ist, dass der scala-Compiler ist intelligent genug, um behebe dies und es wird somit eine einzige Zeichenkette beim Kompilieren entstehen.
Zumindest, das ist, was scala -print
sagt.
object o {
val s = """Hi, """+"""""""""+"""everyone"""
val t = "Hi, \"\"\"everyone"
}
und mit scala -print
→
Main$$anon$1$o.this.s = "Hi, """everyone";
Main$$anon$1$o.this.t = "Hi, """everyone";
ist jedoch zu beachten, dass Sie es nicht eingegeben auf diese Weise. Das Format scala -print
scheint nur für den internen Gebrauch zu sein.
Dennoch könnte es eine einfachere und einfachere Möglichkeit geben, dies zu tun.
Sie können nicht
scala Heredocs sind rohe Strings und verwenden Sie keine Escape-Codes , wenn man sie tripple Anführungszeichen in einem String verwenden String-Verkettung hinzufügen müssen
Sie können die dreifachen Anführungszeichen nicht verwenden, soweit ich weiß. Im spec, Abschnitt 1.3.5 bestimmt:
A mehrzeiligen Stringliteral eine Folge von Zeichen in Anführungszeichen triple "" "... """ eingeschlossen ist. Die Reihenfolge der Zeichen ist willkürlich, außer dass sie nur am Ende drei oder mehr Zitate enthalten kann. Zeichen müssen nicht unbedingt druckbar sein; Zeilenumbrüche oder andere Steuerzeichen sind ebenfalls erlaubt. Unicode-Escapes funktionieren wie überall sonst, aber keine der Escape-Sequenzen in (§1.3.6) wird interpretiert.
Also, wenn Sie drei Anführungszeichen in einem String ausgeben möchten, können Sie immer noch den Apostroph-String mit Entkommen verwenden:
scala> val s = "Hi, \"\"\"everyone"
s: java.lang.String = Hi, """everyone
entkommen" Sie könnten auch die Unicode-Escape-Sequenz verwenden. –
Also, es gibt keine Möglichkeit, dies in Heredoc zu tun. Ich verstehe nicht, warum ich es nicht unterstütze. – Freewind
@jhominal: das funktioniert immer noch nicht, wenn Sie die drei Anführungszeichen innerhalb einer mehrzeiligen Zeichenkette einbinden. Es wird immer noch als das Ende des mehrzeiligen String-Literals –
Es ist ein totaler Hack, dass ich posted on a similar question, aber es funktioniert auch hier: Verwenden Sie Scala XML-Strukturen als Zwischenformat.
val str = <a>Hi,"""everyone</a> text
Dadurch erhalten Sie eine Zeichenfolge mit drei doppelten Anführungszeichen.
Es gibt keine Escape-Zeichen? Er konnte nicht '/"/"/" '? – wheaties
nein, nicht in einem heredoc string Hinzufügen von \ oder/vor dem "würde hinzufügen" oder "" zum String aber Sie können "in einem normalen String –