2009-06-01 4 views
5

次のビットは何もしていないようだ。String.Replaceは、空の文字列とブラケットを交換していないようですC#コードの

String str = "{3}"; 
str.Replace("{", String.Empty); 
str.Replace("}", String.Empty); 

Console.WriteLine(str); 

これは吐き終わる:{3}。なぜこのことが分かりませんか?私はいつもJavaでこのようなことをしています。 .NETの文字列処理のニュアンスがわかりませんか?

ブライアン

+0

可能な複製のhttp:// stackoverflow。com/questions/1948978/string-replace-not-working。これは最初に来ましたが、もう一方はより明確なタイトルを持っています。 – goodeye

答えて

18

Stringクラスがimmutableです。 str.Replacestrに変更されません。新しい文字列が返されます。代わりにこの方法を試してください。

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 

Console.WriteLine(str); 
5

私はあなたがString.Replace参照で

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 

Console.WriteLine(str); 

ルック行う必要がありますね:

戻り値型:

可能System.Stringをこのインスタンスと同等の文字列ですが、 とoldValueのすべてのインスタンス がnewValueに置き換えられました。

5

Replace関数は、変更された文字列を返します。したがって、変数をstr変数に割り当てる必要があります。

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 

Console.WriteLine(str); 
6

Str.Replaceは新しい文字列を返します。したがって、次のように使用する必要があります。

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 
7

Replaceは、実際にあなたがそれを呼び出す文字列インスタンスを変更しません。代わりに、変更されたコピーを返します。

は、この方法を試してください。

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 

Console.WriteLine(str); 
8

文字列は不変です。文字列のインスタンスを変更することはできません。あなたの2つのReplace()呼び出しは、元の文字列に何もしません。変更された文字列を返します。代わりにこれを使います:

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 

Console.WriteLine(str); 

これはJavaでもこのように動作します。

4

私はstr.Replaceがあなたの変数に割り当てなければならない値を返すと信じています。

String str = "{3}"; 
str = str.Replace("{", String.Empty); 
str = str.Replace("}", String.Empty); 

Console.WriteLine(str); 
3

交換に文字列を返しますReplace方法:だからあなたのような何かをする必要があります。これまでの提案のすべてのほか

str = str.Replace("{", string.Empty); 
str = str.Replace("}", string.Empty); 

Console.WriteLine(str); 
3

- あなたはまた、出力にインライン置き換える機能を使用して、元の文字列の値を変更することなく、これを実現することができ..:私はあなたが探していると思うことはこれです

String str = "{3}"; 

Console.WriteLine(str.Replace("{", String.Empty).Replace("}", String.Empty)); 
関連する問題