In .NET kann ich beide \r
oder \n
Zeichenfolgenliterale bereitstellen , aber gibt es eine Möglichkeit, Sonderzeichen wie " Environment.NewLine
statische Eigenschaft " einzufügen ?
c#
.net
line-breaks
Captain Comic
quelle
quelle
Antworten:
Nun, einfache Optionen sind:
string.Format
::String-Verkettung:
String-Interpolation (in C # 6 und höher):
Sie können \ n auch überall verwenden und ersetzen:
Beachten Sie, dass Sie dies nicht als Zeichenfolgenkonstante festlegen können , da der Wert von
Environment.NewLine
nur zur Ausführungszeit verfügbar ist.quelle
Environment.NewLine
? Im Gegenteil, es ist eine gute Praxis, es zu verwendenWenn Sie eine const-Zeichenfolge möchten, die Environment.NewLine enthält, können Sie Folgendes tun:
BEARBEITEN
Da dies eine konstante Zeichenfolge ist, erfolgt dies in der Kompilierungszeit. Daher interpretiert der Compiler eine neue Zeile. Ich kann anscheinend keine Referenz finden, die dieses Verhalten erklärt, aber ich kann beweisen, dass es wie beabsichtigt funktioniert. Ich habe diesen Code sowohl unter Windows als auch unter Ubuntu (mit Mono) kompiliert und dann zerlegt. Dies sind die Ergebnisse:
Wie Sie sehen können, werden Zeilenumbrüche in Windows als \ r \ n und unter Ubuntu als \ n interpretiert
quelle
quelle
first + Environment.NewLine + second
was effizienter und (IMO) einfacher zu lesen ist?String.Format
das würde 1 String auf einmal erzeugen (aber intern ist es aufgrund kulturspezifischer Verkettungen usw. etwas langsam), während die String-Verkettung - 1 resultierend + 1 temporär, richtig?String.Concatenate
, wodurch direkt nur eine Ausgabezeichenfolge erstellt wird (IIRC, wenn die Zeichenfolgen Literale sind, erfolgt die Verkettung im Compiler."a"+b+"c"+d
usw.) nach Leistung sind gleich einer einzigen? Oder einfach nur umgebautString.Concatenate(a,b,c,d,etc)
, oder?string.Format
im Kommentar nicht vorgeschlagen. Die Zeichenfolgenverkettung erzeugt keine temporären Zeichenfolgen, da der Compiler aufruftstring.Concat(first, Environment.NewLine, second)
.Eine weitere Möglichkeit zur bequemen Platzierung von Environment.NewLine in Formatzeichenfolgen. Die Idee ist, eine String-Erweiterungsmethode zu erstellen, die den String wie gewohnt formatiert, aber auch {nl} im Text durch Environment.NewLine ersetzt
Verwendung
Code
Hinweis
Wenn ReSharper Ihre Parameter hervorheben soll, fügen Sie der obigen Methode ein Attribut hinzu
[StringFormatMethod ("Format")]
Diese Implementierung ist offensichtlich weniger effizient als nur String.Format
Vielleicht interessiert sich einer, der sich für diese Frage interessiert, auch für die nächste Frage: Benannte Zeichenfolgenformatierung in C #
quelle
quelle
quelle
Environment.NewLine
- siehe die anderen Antworten.const string
In neueren .net-Versionen können Sie $ vor dem Literal verwenden, wodurch Sie Variablen wie folgt verwenden können:
quelle
Wenn Sie die New Line-Zeichenfolge wirklich als Konstante möchten, können Sie Folgendes tun:
Der Benutzer des schreibgeschützten Schlüsselworts in C # bedeutet, dass diese Variable nur einmal zugewiesen werden kann. Die Dokumentation dazu finden Sie hier . Es ermöglicht die Deklaration einer konstanten Variablen, deren Wert erst zur Ausführungszeit bekannt ist.
quelle
Ich mag eher den "pythonischen Weg"
quelle
Wenn Sie mit einer Webanwendung arbeiten, können Sie dies versuchen.
quelle
Wenn ich die Frage verstehe: Paar
"\r\n"
, um diese neue Zeile unten in a zu bekommentextbox
. Mein Beispiel hat funktioniert -Eine typische Antwort könnte
s1
s2
dietext box
Verwendung eines definierten Typstils sein.quelle
Hier hat Environment.NewLine nicht funktioniert.
Ich habe ein " < br / > " in einem String und arbeitet.
Ex:
quelle