串。替换功能问题!

时间:2010-11-22 17:37:54

标签: c# asp.net

我想我需要一些字符串替换功能的帮助。这个不替换并给我同样的东西。可能是什么问题,伙计们?

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>");

提前谢谢!!

4 个答案:

答案 0 :(得分: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 :(得分:4)

字符串是不可变的,因此字符串上的所有函数都返回新实例。因此,要查看函数的效果,您必须分配结果。

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

来自Replace的文档:

  

返回一个全新的字符串   在...中出现指定的字符串   当前实例被替换为   另一个指定的字符串。

答案 2 :(得分:1)

它不会修改现有实例,而是返回带有更改的实例。

来自MSDN ......

  

此方法不会修改该值   当前实例相反,它   返回一个新的字符串,其中包含all   oldValue的出现被替换   by newValue。

因此,您需要存储返回的值并将其设置在标签上,或者只需将标签设置为返回值。

答案 3 :(得分:1)

不要忘记string是c#是不可变的。因此,Replace无法在适当的位置改变它。相反,它会返回一个替换完成的新副本。