Benutzer mit den meisten Antworten
String Themen, Umbruch, Unterschied string zu String

Frage
-
Hallo,
wenn ich einen langen String zum formatieren habe, wie kann ich Zeilenumbrüche einpflegen, ohne dass diese nachher zu Gesicht kommen. Einfach im Code.
In C++ gab es mal \
in VB _ in C# ? Gibt es grobe Richtlinien, wann nimmt man was Klein Groß Stringbuilder Klasse Danke für den schellen Tipp.
Grüße Andreas
string help = String.Format("{0}\r\nReturnCode\t\t-{1}\r\nReturnDescription\t\t-{2}\r\nTrace_Level\t\t-{3}\r\n", telegram, string help = string.Format("{0}\r\nReturnCode\t\t-{1}\r\nReturnDescription\t\t-{2}\r\nTrace_Level\t\t-{3}\r\n", telegram
Antworten
-
Hallo Andreas,
gut, im Prinzip müsste man zwar noch wissen, was alles unter "nachher nicht zu Gesicht kommen" untergeordnet ist, aber ich kann schon mal allgemein sagen, dass man das, was Du darunter als Code gepostet hast schon auch in etwa so (in diesem Fall) benutzen kann. Vielleicht etwas abgewandelt:
/// <summary> /// Ruft die fürdiese Umgebung definierte Zeichenfolge für einen /// Zeilenumbruch ab. Eine Zeichenfolge für Nicht-Unix-Plattformen, die "\r\n" /// enthält, oder eine Zeichenfolge für Unix-Plattformen, die "\n" enthält. /// </summary> public string NL = Environment.NewLine; public Form1() { InitializeComponent(); // Beispiel! string par1="Hilfe-Beschreibung:", par2="2", par3="3", par4="4"; string help = String.Format( // Achtung \t ist etwas unsauber! "{1}{0}" + "ReturnCode\t\t-{2}{0}" + "ReturnDescription\t\t-{3}{0}" + "Trace_Level\t\t-{4}{0}", NL, par1, par2, par3, par4); MessageBox.Show(help); }
Nicht zu Gesicht bekommst Du die escapten Zeichen zum Beispiel in Ausgaben in Text-Controls oder im String-Debugger-Visualizer (und weitere wie Console.WriteLine, MessageBox.Show etc.). Beim Visualizer geht man während des Debuggens über die (string) Variable und es erscheint der Wert, nun klickt man auf die Lupe (Symbol) und kann den String ohne die Zeichen anschauen. Diese kann man auch selber programmieren.
Eine grobe Regel bezüglich des StringBuilders habe ich einmal postuliert (kein MS):
Ab 5 String-Konkatenationen den StringBuilder benutzen, sonst + Operator.
Ergeben hatte sie sich schlicht aus Performance-Messungen zusammen mit Heuristiken.
Aber man findet ähnliches aus in MSDN-Blogs o.a..
Dennoch sollte man weiterhin wissen: Lesbarkeit ist in 90% der Fälle das wichtigste. ->CCD_______________
Literatur u.a. auch:[Benutzerdefinierte Zahlenformatzeichenfolgen]
http://msdn.microsoft.com/de-de/library/0c899ak8.aspx
[Kombinierte Formatierung]
http://msdn.microsoft.com/de-de/library/txafckwd.aspx[Gewusst wie: Auffüllen einer Zahl mit führenden Nullen]
http://msdn.microsoft.com/de-de/library/dd260048.aspx
Für mehrzeilige Strings gibt es übrigens in C# auch die Form:
string mehrereZeilen =
@"Erste Zeile
Zweite Zeile
Dritte Zeile";
ciao Frank- Als Antwort markiert Andreas Bauer2 Mittwoch, 2. Februar 2011 19:51
Alle Antworten
-
Hallo Andreas,
> Wenn ich einen langen String zum formatieren habe, wie kann ich Zeilenumbrüche einpflegen, ohne dass diese nachher zu Gesicht kommen. Einfach im Code.
Ich bin mir nicht sicher, ob ich Dich richtig verstehe. Eine Zeichenfolge muss noch in der selben Zeile mittels Anführungszeichen geschlossen werden. Andernfalls bekommt man den Kompilierfehler CS1010 angezeigt. In C# trennt man Zeichenfolgen so:
string s = "Das ist eine sehr lange Zeichenfolge. " + "Die Zeichenfolge kann nicht auf die folgende Zeile " + "umgebrochen werden, aber man kann sie verketten.";
P.S. Bei Verwendung von mehrzeiligen ad-literam Strings (so wie sie Frank in seinem Posting anführt), sind die Zeilenumbrüche Bestandteil des Strings und werden als solche natürlich angezeigt, sobald die Variable z.B. einer TextBox zugewiesen wird. Sie sind kein Mittel um eine bessere Code-Lesbarkeit zu erreichen.
Gruss
Marcel -
Hallo Andreas,
gut, im Prinzip müsste man zwar noch wissen, was alles unter "nachher nicht zu Gesicht kommen" untergeordnet ist, aber ich kann schon mal allgemein sagen, dass man das, was Du darunter als Code gepostet hast schon auch in etwa so (in diesem Fall) benutzen kann. Vielleicht etwas abgewandelt:
/// <summary> /// Ruft die fürdiese Umgebung definierte Zeichenfolge für einen /// Zeilenumbruch ab. Eine Zeichenfolge für Nicht-Unix-Plattformen, die "\r\n" /// enthält, oder eine Zeichenfolge für Unix-Plattformen, die "\n" enthält. /// </summary> public string NL = Environment.NewLine; public Form1() { InitializeComponent(); // Beispiel! string par1="Hilfe-Beschreibung:", par2="2", par3="3", par4="4"; string help = String.Format( // Achtung \t ist etwas unsauber! "{1}{0}" + "ReturnCode\t\t-{2}{0}" + "ReturnDescription\t\t-{3}{0}" + "Trace_Level\t\t-{4}{0}", NL, par1, par2, par3, par4); MessageBox.Show(help); }
Nicht zu Gesicht bekommst Du die escapten Zeichen zum Beispiel in Ausgaben in Text-Controls oder im String-Debugger-Visualizer (und weitere wie Console.WriteLine, MessageBox.Show etc.). Beim Visualizer geht man während des Debuggens über die (string) Variable und es erscheint der Wert, nun klickt man auf die Lupe (Symbol) und kann den String ohne die Zeichen anschauen. Diese kann man auch selber programmieren.
Eine grobe Regel bezüglich des StringBuilders habe ich einmal postuliert (kein MS):
Ab 5 String-Konkatenationen den StringBuilder benutzen, sonst + Operator.
Ergeben hatte sie sich schlicht aus Performance-Messungen zusammen mit Heuristiken.
Aber man findet ähnliches aus in MSDN-Blogs o.a..
Dennoch sollte man weiterhin wissen: Lesbarkeit ist in 90% der Fälle das wichtigste. ->CCD_______________
Literatur u.a. auch:[Benutzerdefinierte Zahlenformatzeichenfolgen]
http://msdn.microsoft.com/de-de/library/0c899ak8.aspx
[Kombinierte Formatierung]
http://msdn.microsoft.com/de-de/library/txafckwd.aspx[Gewusst wie: Auffüllen einer Zahl mit führenden Nullen]
http://msdn.microsoft.com/de-de/library/dd260048.aspx
Für mehrzeilige Strings gibt es übrigens in C# auch die Form:
string mehrereZeilen =
@"Erste Zeile
Zweite Zeile
Dritte Zeile";
ciao Frank- Als Antwort markiert Andreas Bauer2 Mittwoch, 2. Februar 2011 19:51