2012-05-25 15 views
13

Ich habe ein paar Probleme mit dem Versuch, Backslashes in einer Datumszeichenfolge auf C# .net zu ersetzen.Ersetzen von Backslash in einer Zeichenfolge

Bisher verwende ich:

string.Replace(@"\","-") 

aber es hat nicht den Ersatz getan. Könnte jemand bitte helfen?

+1

Sie sicher arbeiten Sind die Zeichenfolge Schrägstriche enthält und keine Schrägstriche _forward_ (da _dates_ meistens vertreten sind)? – Oded

+1

Ich vermute, dass Sie eine 'DateTime' besser formatieren sollten, als zu versuchen, eine String-Manipulation durchzuführen. – Jodrell

+0

Sorry oded, was auch immer der in meinem Beispiel ist? – mezamorphic

Antwort

34

string.Replace ändert nicht die Zeichenfolge selbst, sondern gibt eine neue Zeichenfolge zurück, die Sie wahrscheinlich wegwerfen. Tun Sie dies statt:

myString= myString.Replace(@"\","-"); 

Auf einer Seite zur Kenntnis, diese Art von Operation wird in der Regel in Code zu sehen, die manuell mucks um mit formatiertem Datum Saiten. Die meiste Zeit gibt es einen besseren Weg zu tun, was Sie wollen (was ist?) Als solche Dinge.

1

Verwenden Sie es auf diese Weise.

oldstring = oldstring.Replace(@"\","-"); 

Suchen Sie nach String.Replace Rückgabetyp.

Es ist eine Funktion, die eine korrigierte Zeichenfolge zurückgibt. Wenn es nur den alten String geändert hätte, hätte es einen void Rückgabetyp.

0

Sie könnten auch verwenden:

myString = myString.Replace('\\', '-')); 

aber nur lassen Sie wissen, sind Datum Schrägstriche in der Regel nach vorn diejenigen /, und nicht umgekehrten Schrägstrichen \.

+0

'" \\ "== @" \ "' nein? Ich glaube nicht, dass die Beschränkung auf "char" den Unterschied machen wird. – Jodrell

+0

@ericosg: Lesen Sie über 'verbatim Strings in C#' –

+0

@Jodrell, danke, ja sie sind die gleichen, war nur eine Alternative vorschlagen, während wichtiger, um den Schrägstrich zu beachten. Ich habe es auch bearbeitet. – ericosg

0

Wie von anderen vorgeschlagen, aktualisiert String.Replace das ursprüngliche Zeichenfolgenobjekt nicht, sondern gibt stattdessen eine neue Zeichenfolge zurück.

Es lohnt sich zu verstehen, dass die Zeichenfolge in C# grundsätzlich unveränderlich ist, um sie threadsicher zu machen. Weitere Informationen über Strings und warum sie unveränderlich sind, finden Sie unter den Links here und here

3

, da alle sagen, dass Sie Wert in der Variable zurücknehmen müssen.

so sollte es

val1= val1.Replace(@"\","-"); 

Oder

val1= val1.Replace("\\","-"); 

aber nicht nur sein .. unter einem nicht

val1.Replace(@"\","-"); 
Verwandte Themen