2010-11-22 11 views
0

私は文字列置換機能のためにいくつかの助けが必要だと思います。これは置き換えず、同じことを私に返します。何が問題なのでしょうか?文字列。交換機能の問題!

FormattedURl = mysite.com/Merchant.aspx?1=lkdflfdfgj3242 

lblclick.Text.Replace("<a class=linkclass href=http://www.mysite.com/ target=_blank > </a>", 
"<a class=linkclass href=" + FormattedURL1 + "target=_blank ></a>"); 

ありがとうございます!

答えて

8

テキストを変数またはコントロールに戻す必要があります。

replace関数は文字列を返し、現在のインスタンスは変更しません。

lblclick.Text = lblclick.Text.Replace("<a class=linkclass href=http://www.mysite.com/ target=_blank > </a>", 
"<a class=linkclass href=" + FormattedURL1 + "target=_blank ></a>"); 
1

既存のインスタンスは変更されず、変更されたインスタンスが戻されます。 MSDNから

...

このメソッドは、現在のインスタンスの値 を変更しません。代わりに、 は、すべての のoldValueがnewValueによって に置き換えられた新しい文字列を返します。

したがって、返された値を格納してラベルに設定するか、ラベルを返された値に設定する必要があります。

4

文字列は不変なので、stringのすべての関数は新しいインスタンスを返します。したがって、関数の効果を見るには、結果を代入する必要があります。 Replaceのドキュメントから

lblclick.Text = lblclick.Text.Replace("<a class=linkclass href=http://www.mysite.com/ target=_blank > </a>", "<a class=linkclass href=" + FormattedURL1 + "target=_blank ></a>"); 

現在のインスタンス で指定した文字列のすべての 出現が 別の指定した文字列に置き換えた新しい文字列を返します。

+0

ありがとうブライアン:) – Ram

+0

@Ram:私の喜び。 –

1

stringはc#が不変であることを忘れないでください。したがって、Replaceがその場所でそれを変更する方法はありません。代わりに、置換を完了して新しいコピーを返します。