Es fällt mir schwer herauszufinden, wie die Stringsyntax in Rust funktioniert. Insbesondere versuche ich herauszufinden, wie man eine mehrzeilige Zeichenkette erstellt.Wie lautet die Syntax für ein mehrzeiliges Zeichenfolgenliteral?
Antwort
Alle Zeichenfolgenliterale können über mehrere Zeilen verteilt sein, z.
let string = "line one
line two";
ist eine zweizeilige Zeichenfolge, die gleiche wie "line one\nline two"
(natürlich kann man die \n
direkt zu entkommen Newline verwenden). Wenn Sie eine Zeichenkette aus Formatierungsgründen nur über mehrere Zeilen aufteilen möchten, können Sie die Zeilenumbrüche und die führenden Leerzeichen mit einer \
, z.
let string = "one line \
written over \
several";
ist das gleiche wie "one line written over several"
.
Danke! Ich suchte nach dem Fall "line one/nline two". – Dumbapples
Falls Sie wollen etwas länger, etwas zu tun, was zitiert, Schrägstriche, usw. können oder nicht enthalten, die Verwendung raw string literal notation:
let shader = r#"
#version 330
in vec4 v_color;
out vec4 color;
void main() {
color = v_color;
};
"#;
Wenn Sie Sequenzen von doppelten Anführungszeichen und Hash-Symbole innerhalb
let crazy_raw_string = r###"
My fingers #"
can#"#t stop "#"" hitting
hash##"#
"###;
Aber ... Sie müssen nur Zeilenumbrüche umgehen, wenn Sie keine Zeilenumbrüche im Ergebnis haben wollen, und rohe Strings helfen dabei nicht. – poolie
Raw-Zeichenfolgen verhindern nur, dass Sie am Ende jeder Zeile ein '\' hinzufügen müssen, wenn Sie die Zeilenumbrüche nicht berücksichtigen (z. B. beim Einbetten von Code, der unabhängig von Shadern und Kerneln ist) oder wie Sie angespielt, wenn die Zeilenumbrüche tatsächlich notwendig sind. Es erleichtert nur das Einbetten von Code, den Sie bearbeiten möchten, und muss sich nicht mit dem "\" am Ende jeder Zeile herumärgern. Das ist alles. – c0g
Wenn Sie in der resultierenden Zeichenkette Zeilenumbrüche verwenden möchten (oder nicht daran interessiert sind), werden einfache doppelt zitierte Strings sehr gut funktionieren, wie in den anderen Beispielen gezeigt. Wenn Sie Zeilenumbrüche vermeiden möchten, sind rohe Strings nicht gut.Sie helfen nur, wenn der Text Anführungszeichen, Backslashes usw. enthält - wie es bei eingebetteter Quelle der Fall ist. – poolie
Huon's answer korrekt ist, aber wenn die Einbuchtung Sie stört, sollten Sie Indoc verwendet, die eine prozedurale Makro für gegliederte mu: Zeichenfolge, können Sie eine beliebige Anzahl von Hashes als Trennzeichen bezeichnen ll-Linien-Saiten. Es steht für "eingerücktes Dokument". Es stellt ein Makro mit dem Namen indoc!()
bereit, das ein mehrzeiliges Zeichenfolgenliteral verwendet und es rückgängig macht, so dass das linke Leerzeichen ohne Leerzeichen in der ersten Spalte steht.
let s = indoc!("
line one
line two");
Das Ergebnis ist "line one\nline two"
.
Es gibt ein paar gleichwertige Möglichkeiten, die gleiche Sache zu formatieren, wenn Sie bevorzugen, also wählen Sie eine, die Sie mögen. Die folgenden beiden ergeben dieselbe Zeichenfolge wie oben. Der Inhalt kann so oft eingerückt werden, wie Sie möchten - es muss keine bestimmte Anzahl von Leerzeichen sein.
let s = indoc!(
"line one
line two");
let s = indoc!("line one
line two");
Leerraum ist in Bezug auf die am weitesten links liegenden Nicht-Leerzeichen in dem Dokument erhalten, so dass die folgende Zeile weist zwei eingekerbte 3 Felder relativ zu einer Zeile:
let s = indoc!("
line one
line two");
Das Ergebnis ist "line one\n line two"
.
- 1. Wie lautet die Syntax für Referenzparameter für Variant-Template-Arrays?
- 2. Wie lautet die Syntax für Sequenzanweisungen in Gremlin?
- 3. Wie lautet die optimale HTML-Link-Syntax für Websitesymbole/-favoriten?
- 4. Wie lautet die Syntax für ORDERBY in LINQ von VB.NET?
- 5. Wie lautet die Syntax für den impliziten Darsteller in Dart?
- 6. Wie lautet die Syntax für CKEDITOR.replaceAll benutzerdefinierte Assertionsfunktionen?
- 7. Wie lautet die Syntax für den Zugriff auf PHP-Objekteigenschaften?
- 8. Wie lautet die RTF-Syntax für einen Hyperlink?
- 9. Wie lautet die Syntax eines Kommentars in einer .rgs-Datei
- 10. Wie lautet die Syntax zum Deklarieren eines Ereignisses in C#?
- 11. Wie lautet die Syntax zum Ignorieren eines Verzeichnisses in Git?
- 12. Wie lautet die korrekte Winkelmessersyntax für Seitenobjekte?
- 13. Wie lautet die C++/CLI-Syntax zum Abonnieren von Ereignissen?
- 14. Wie lautet die vollständige Syntax von Groovys GPath-Ausdrücken?
- 15. Wie lautet die rechtliche Syntax zum Definieren von verschachtelten Vorlagen?
- 16. Wie lautet die Syntax zum Drucken mehrerer Datentypen in Python?
- 17. Wie lautet die Syntax der erweiterten for-Schleife in Java?
- 18. Wie lautet die Syntax von 'unarchive' des jenkins Workflow-Plugins?
- 19. Wie lautet die Syntax zum Schreiben von Testspezifikationen in Gurke?
- 20. Wie lautet die PHP-Syntax für die Formatierung von Datei-/Terminalausgaben?
- 21. Wie lautet die richtige Syntax für die Darstellung von Unterobjekten in JSON?
- 22. Wie lautet die korrekte Syntax für die Verwendung von Database.ExecuteSqlCommand mit Parametern?
- 23. Wie lautet die Standardgröße für ein HTML-Formularfeld (Typ = Text)?
- 24. Wie lautet die Dateinamenerweiterung für Visual Basic?
- 25. Wie lautet die CSS-Syntax für eine benannte Span-Klasse, die in einem Div verschachtelt ist?
- 26. YQL - Wie lautet die Syntax zum Abfragen von Daten für die letzten 3 Monate in YQL?
- 27. Wie lautet die Syntax für die Verwendung einer Select-Anweisung in einem PL/SQL-Trigger?
- 28. Wie lautet die Scala-Syntax für eine Funktion, die einen Untertyp von Ordered [A] verwendet?
- 29. Wie lautet die Syntax für die Anweisung create table in Excel?
- 30. SSRS - Wie lautet die Syntax für die Zielserver-URL in SSRS2008R2
Mögliches Duplikat von [Wie schreibe ich eine mehrzeilige Zeichenfolge in Rust?] (Http://stackoverflow.com/questions/15265198/how-do-i-write-a-multi-line-string-in -rust) –