Mehrzeiliger String-Literal in C #
Gibt es eine einfache Möglichkeit zum erstellen einer mehrzeiligen string-literal in C#?
Hier ist, was ich jetzt habe:
string query = "SELECT foo, bar"
+ " FROM table"
+ " WHERE id = 42";
Ich Ahnung von PHP hat
<<<BLOCK
BLOCK;
Tut C# haben etwas ähnliches?
InformationsquelleAutor der Frage Chet | 2009-07-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die
@
symbol vor einemstring
zu bilden verbatim string literal:Du auch müssen keine spezielle escape-Zeichen wenn Sie diese Methode verwenden, außer für die doppelten Anführungszeichen, wie gezeigt, in Jon Skeet Antwort.
InformationsquelleAutor der Antwort John Rasch
Es heißt, einen verbatim string literal in C#, und es ist nur eine Frage des Stellens von @ vor den literalen. Nicht nur, dass diese mehrere Zeilen zulassen, aber es schaltet auch die Flucht. So zum Beispiel können Sie tun:
Nur etwas von Flucht ist, dass, wenn Sie möchten, dass ein doppeltes Anführungszeichen, Sie haben ein zusätzliches double-quote-Zeichen:
InformationsquelleAutor der Antwort Jon Skeet
Einem anderen Punkt zu beobachten, ist die Verwendung von string-literalen in der Zeichenkette.Format. In diesem Fall müssen Sie entkommen geschweiften Klammern/Klammern '{' und '}'.
InformationsquelleAutor der Antwort Martin Clarke
Das problem mit Hilfe von string-literal finde ich ist, dass es kann Ihren code sehen ein bisschen "komisch", weil damit nicht Leerzeichen im string selbst, es ist komplett Links ausgerichtet:
Igitt.
Also die Lösung, die ich mag zu verwenden, die hält alles schön ausgerichtet mit dem rest des Codes ist:
Und natürlich, wenn Sie wollen einfach nur logisch aufgeteilt Zeilen einer SQL-Anweisung, wie Sie sind und nicht wirklich brauchen, eine neue Linie, Sie können immer ersetzen Sie einfach
Environment.NewLine
für" "
.InformationsquelleAutor der Antwort dav_i
Als Randbemerkung, mit C# 6.0 können Sie jetzt kombinieren interpolierte strings mit der verbatim string literal:
InformationsquelleAutor der Antwort Heliac
Warum machen die Leute halten verwirrend strings mit string-literalen? Die akzeptierte Antwort ist eine gute Antwort auf eine andere Frage, nicht zu diesem.
Ich weiß, das ist ein altes Thema, aber ich kam hier mit vielleicht die gleiche Frage wie der OP, und es ist frustrierend zu sehen, wie die Leute halten verlesen. Oder vielleicht bin ich verlesen, ich weiß es nicht.
Grob gesprochen, ein string ist eine region von computer-Speicher, während der Ausführung eines Programms, enthält eine Sequenz von bytes, die gemappt werden kann, um text Zeichen. Ein string-literal ist, auf der anderen Seite, ist ein Stück source-code noch nicht kompiliert, das ist der Wert, der verwendet wird, zu initialisieren einen string später, während der Ausführung des Programms, in dem es erscheint.
In C#, die Aussage...
... nicht produzieren Sie ein drei-line string, sondern ein Einzeiler; die Verkettung von drei Zeichenfolgen (jeweils initialisiert von einem anderen wörtlich) keiner von denen enthält ein neue-Zeile-modifier.
Was der OP zu Fragen scheint -zumindest, was würde ich bitten, mit diesen Worten - nicht vorstellen können, in der kompilierten string, Zeilenumbrüche, imitieren diese in den Quellcode, aber wie zu brechen für die Klarheit einer langen, einzeiligen text in den Quellcode ohne Einführung bricht in der kompilierten string. Und ohne einen längeren Ausführungszeit, verbrachte den Beitritt der mehrere Teilstrings aus dem source-code. Wie die nachgestellte Schrägstriche innerhalb einer mehrzeiligen string-literal in javascript oder C++.
Was auf die Verwendung von verbatim strings, nevermind
StringBuilder
sString.Join
s oder gar verschachtelte Funktionen mit string-Umkehrungen und was nicht, lässt mich denken, dass die Menschen nicht wirklich die Frage zu verstehen. Oder vielleicht ich verstehe es nicht.Soweit ich weiß, C# ist nicht (zumindest in der Altsteinzeit version ich bin immer noch mit den, aus dem vorherigen Jahrzehnt) haben eine Funktion, um sauber produzieren multiline-string Literaledie gelöst werden können, die während der Kompilierung statt der Ausführung.
Vielleicht aktuelle Versionen unterstützen es, aber ich dachte, ich würde teilen, den Unterschied sehe ich zwischen strings und string-Literale.
InformationsquelleAutor der Antwort Carvo Loco
Ich noch nicht gesehen, also werde ich es hier posten (wenn Sie interessiert sind, übergeben Sie eine Zeichenfolge, die Sie tun können diese als gut.) Die Idee ist, dass Sie können brechen die Zeichenfolge auf mehrere Zeilen und fügen Sie Ihre eigenen Inhalte (auch über mehrere Zeilen) in irgendeiner Weise, die Sie wünschen. Hier "tableName" übergeben werden können, in den string.
InformationsquelleAutor der Antwort RobertHana
Wenn Sie nicht möchten, dass Leerzeichen/Zeilenumbrüche, string Zusatz scheint zu funktionieren:
Können Sie die oben genannten hierwenn Sie mögen.
InformationsquelleAutor der Antwort rattray
Können Sie @ und "".
InformationsquelleAutor der Antwort vovkas
Können Sie diese verwenden zwei Methoden :
In der SplitLineToMultiline() , definieren Sie die Zeichenfolge, die Sie verwenden möchten, und die Zeile der Länge , es ist sehr einfach .
Danke .
InformationsquelleAutor der Antwort nassimlouchani