Entwickler-Ecke
WinForms - Mehrzeiligen String in Einzeiligen String umwandeln
Andre06 - Do 17.05.12 19:11
Titel: Mehrzeiligen String in Einzeiligen String umwandeln
Hallo alle zusammen :)
Ich habe ein Problem, welches bestimmt einfach zu lösen ist. Jedoch bin ich noch nicht auf die richtige Lösung gestoßen. Per SuFu habe ich noch nichts gefunden, da ich auch nicht so recht wusste, unter welchem Schlagwort ich suchen sollte.
Ich habe ein Programm welches mir Code für eine Messagebox erstellt, um mir Arbeit abzunehemn... leider macht es mir im Moment Arbeit :D
Ich habe eine Mehrzeilige Textbox, in welcher zum Beispiel steht:
"Hallo,
wie
gehts?"
Und dieser Text aus der Mehrzeiligen Textbox soll für die Messagebox in einer Zeile stehen. Also:
C#-Quelltext
1:
| Messagebox.Show("Hallo," + "\n" + "wie" + "\n" + "gehts?"); |
Ich habe mir gedacht, dass es möglicherweise mit der Replace-Funktion funktioniert, jedoch hat es bis jetzt noch nicht geklappt.
Für eventuelle Lösungsansätze oder sogar Codeschnipsel wäre ich sehr dankbar :)
LG Andre06
Christian S. - Do 17.05.12 19:36
Hallo!
Ein einfaches Ersetzen geht:
C#-Quelltext
1: 2: 3:
| var s = "Hallo," + "\n" + "wie" + "\n" + "gehts?"; s = s.Replace("\n", " "); MessageBox.Show(s); |
Du solltest aber beachten, dass der Zeilenumbruch in Windows "\r\n" ist. Am Besten benutzt Du
Environment.NewLine, das enthält immer den korrekten Zeilenumbruch.
Grüße,
Christian
Andre06 - Do 17.05.12 20:04
Hallo Christian!
Erstmal vielen Dank für die schnelle Antwort! Eigentlich meinte ich es etwas anders, also im Prinzip genau umgekehrt :wink:
In der Textbox steht folgender Text:
"Hallo
wie
gehts?"
Diesen Text will ich zusammen mit dem Titel und anderen Informationen in den MessageBox-Code reinschreiben. Es sollen praktisch aus den echten Zeilenumbrüchen, Anweisungen für Zeilenumbrüche entstehen. Also sollen quasi die Zeilenumbrüche aus dem mehrzeiligen String gelöscht werden und an den Stellen wo sie waren, Soll der String unterbrochen werden und eine Anweisung für einen Zeilenumbruch entstehen. Das soll dann in die Zwischenablage. Also will ich, dass z.b. Enviroment.NewLine als Text, so wie er ist übergeben wird und nicht in den String ein Zeilenumbruch eingefügt werden soll.
D.h.:
"Hallo
wie
gehts?"
wird zu:
"Hallo" + Enviroment.NewLine + "wie" + Enviroment.NewLine + "gehts?"
Dieser String soll also genauso wie er da steht in die Zwischenablage kopiert werden. Und wenn man dann die Zwischenablage irgendwo einfügt, dann soll auch genau das da stehen. Denn da soll ja eine MessageBox-Anweisung draus werden.
MessageBox.Show("Hallo" + Enviroment.NewLine + "wie" + Enviroment.NewLine + "gehts?");
Diese MessageBox-Anweisung soll in der Zwischenablage stehen, sodass ich sie im C#-Projekt einfügen kann und ich eine fertige Messagebox habe ohne den Code selbst schreiben zu müssen.
Ich hoffe, ich konnte mich einigermaßen verständlich ausdrücken. :?
LG Andre06
Christian S. - Do 17.05.12 20:12
Dann würde ich mittels
String.Split (und als Trennzeichen den Zeilenumbruch) die Zeilen in ein String-Array aufspalten. Aus dem kannst Du ja dann die Anweisung als String zusammensetzen.
//edit: Ach, Quatsch, einfacher:
C#-Quelltext
1:
| s = "\""+ s.Replace(Environment.NewLine, "\" + Environmen.NewLine + \"") + "\""; |
Andre06 - Do 17.05.12 20:21
Hallo Christian!
Nachdem ich den letzten Beitrag gesendet habe, ist mir ein Geistelblitz gekommen :D
Ich habe es selbst gelöst:
C#-Quelltext
1: 2:
| string a = "Environment.NewLine"; Text = TxtText.Text.Replace(Environment.NewLine, char.ConvertFromUtf32(34) + " + " + a + " + " + char.ConvertFromUtf32(34)); |
Ich habe eine String-Variable deklariert und sie mit "Environment.NewLine" gefüllt. Deshalb wird der Zeilenumbruch nicht ausgeführt sondern dargestellt.
Ohh habe deinen editierten Beitrag gelesen... Ja so habe ich es gemacht, nur habe ich anstatt "\"" und \"" es mit char.ConvertFromUtf32(34) gemacht, weil ich es so übersichtlicher finde als mit der Lösung von C# mit diesem Backslash. Da finde ich die Lösung bei VB.Net eleganter (dreifache Anführungsstriche ;) ). Ob es nun eleganter ist, es wie du zu machen weis ich nicht, aber mir persönlich gefällt es so besser :D
Trotzdem vielen Dank für deine Antworten
LG Andre06
Kha - Fr 18.05.12 00:30
Du merkst dir also lieber eine Magic Number wie 34 anstatt einen einzelnen zusätzlichen \ schreiben zu müssen :gruebel: ...?
Andre06 - Fr 18.05.12 12:11
Hallo Kha!
Okay jetzt wo du es so sagst, hört es sich wirklich dämlich an sich eine "Magic Number" wie 34 merken zu müssen. Ich werde es ab jetzt mit einem \ machen. Danke für den Tipp ;)
LG Andre06
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!