26

C# .net で日付文字列のバックスラッシュを置き換えようとすると、いくつかの問題が発生します。

これまでのところ、私は使用しています:

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

しかし、それは交換を行っていません。誰でも助けてもらえますか?

4

5 に答える 5

53

string.Replace文字列自体を変更するのではなく、新しい文字列を返します。これはおそらく破棄しています。代わりにこれを行います:

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

余談ですが、この種の操作は通常、書式設定された日付文字列を手動で操作するコードで見られます。ほとんどの場合、このようなことよりも、やりたいこと (どれが?) を行うためのより良い方法があります。

于 2012-05-25T10:35:06.140 に答える
4

変数に値を戻す必要があると彼ら全員が言っているように。

だからそうあるべきだ

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

または

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

しかし、それだけでなく..以下のものは機能しません

 val1.Replace(@"\","-");
于 2012-05-25T11:16:52.827 に答える
1

このように使用してください。

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

String.Replace戻り値の型を探します。

修正した文字列を返す関数です。古い文字列を単純に変更した場合は、void戻り値の型がありました。

于 2012-05-25T10:36:36.650 に答える
1

以下を使用することもできます。

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

ただし、日付のスラッシュは通常/、バックスラッシュではなくフォワード スラッシュ\です。

于 2012-05-25T10:37:08.543 に答える
0

他の人が示唆しているように、 String.Replace は元の文字列オブジェクトを更新しませんが、代わりに新しい文字列を返します。

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

C# では、基本的に文字列をスレッドセーフにするために、文字列が不変であることを理解することは価値があります。文字列とそれらが不変である理由の詳細については、ここここのリンクを参照してください。

于 2012-05-25T10:45:48.273 に答える