Linux- in Windows-Zeilenumbruch konvertieren

Christian Kusmanow

Erfahrenes Mitglied
Hallo FIAE's!

Das scheint ein logisches Problem zu sein oder sowas.

Ich bekomm ein großes XML via SOAP von einem UnixServer.
Da ich ein Windows Programm schreibe muss ich die Zeilenumbrüche Windowskonform machen da das "Rollback" fehlt.

Das suchen und ersetzen von den oben genannten Zeilenumbrüchen funktioniert irgendwie nicht.

Methode 1:
Code:
sProfileArray[i].Replace( "\r", "" ); // um Verdoppelungen zu vermeiden
sProfileArray[i].Replace( "\n", "\n\r" );

Methode 2:
Code:
RegularExpressions.Regex.Replace( sProfileArray[i], "\r", "" ); // um Verdoppelungen zu vermeiden
RegularExpressions.Regex.Replace( sProfileArray[i], "\n", "\n\r" );
Trotdem funktionieren alle beide Methoden nicht.
Weiß jemand warum? :confused:
 
Hi.

Unter Linux wird nur "\n" (LineFeed) verwendet, und unter Windows "\r\n" (CarriageReturn, LineFeed).

Code:
Linux -> Windows: sProfileArray[i].Replace( "\n", "\r\n" );
Windows -> Linux: sProfileArray[i].Replace( "\r\n", "\n" );

MfG,
Alex
 
Danke für die schnelle Antwort MASTER, aber genau so hab ich es gemacht.
Code:
sProfileArray[i].Replace( "\n", "\r\n" );
Wenn wir die Slashes vor dem Senden konvertieren kann das SOAP nichts mehr damit anfangen.
Ich schöre es funtioniert nicht. Bitte hilf mir, es ist zum verzweifeln :suspekt:
 
Zuletzt bearbeitet:
Das was ich machen will wird einfach nicht ausgeführt. Der String bleibt unangetastet.

Ich empfange via SOAP ein serialisiertes StringArray in dem sich ein Benutzerprofil(Text) befindet.
Einige sachen werden in einzeiligen TextBoxen ausgegeben. Kein Problem also.
Aber wenn ich mehrzeilige TextBoxen verwende in denen ich logischerweise mehrzeilige Sachen ausgebe die Zeilenumbrüche beinhalten, werden aus den Zeileumbrüchen Rechtecke.
Und wie gesagt, die Replace-Methode hat keine Wirkung auf den String.
 
Hallo.

Probier' doch mal, vor deine Strings einen Klammeraffen (@) zu setzen, damit der String jedes Zeichen so übernimmt, wie's gemeint ist, und die Escape-Sequenzen vorerst mal ignoriert.
Also anstatt
Code:
sProfileArray[i].Replace( "\n", "\r\n" );
schreib
Code:
sProfileArray[i].Replace( @"\n", @"\r\n" );
Ich mach' das immer so, wenn der String eins zu eins übernommen werden soll.
Lasse mich aber auch gerne korrigieren, war halt nur so eine Idee... ;-)

Gruß, Niko
 
So steht es auch in der MSDN wenn man das Ersetzen mit Regex durchführt. Hab ich aber auch schon mit String.Replace() probiert.
Kein Effekt.

Zum Test hab ich nach dem Zeichen suchen lassen und der Index wurde zurückgegeben.
Code:
MessageBox.Show(sProfileArray[i].IndexOf("\n").ToString())

Was ich noch an Informationen habe:
Das Array wird von dem Objekt verändert in dem es sich befindet.
Die Klasse in der sich das Array befindet ist Serializable(). Wobei ich aber nicht denke das dass ein Rolle spielt.
FrameWork1.1
VS 2003

Gibt es wirklich niemand anderes der nicht auch schon so ein Problem gehabt hat?
Himmel Hilf! :eek:
 
Du darfst mir eine runterhauen! Ich Trottel!
Das ist mir jetzt aber peinlich. Sowas passiert wenn man die Augen nicht mehr weit genug auf kriegt nach den ganzen Überstunden.
Ich danke Dir! Und natürlich allen anderen auch!

Gruss cosmo
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück