替换c#问题中的字符串

时间:2013-09-24 06:50:24

标签: c# string

我的代码:

msg = msg.Replace(":)", "<a href=\"javascript:void(0)\" class=\"EmojiesIcon\" id=\"smiley\" title=\":)\" ></a>")
         .Replace(":v", "<a href=\"javascript:void(0)\" class=\"EmojiesIcon\" id=\"pacman\" title=\":v\"></a>");

当我在文本框中输入:)并点击发送时,msg的结果始终是:

<a href="javascript<a href="javascript:void(0)" class="EmojiesIcon" id="pacman" title=":v"></a>oid(0)" class="EmojiesIcon" id="smiley" title=":)" ></a>

我无法找到为什么会出现这个问题。

1 个答案:

答案 0 :(得分:3)

msg = msg.Replace(":)", "<a href=\"javascript:void(0)\" class=\"EmojiesIcon\" id=\"smiley\" title=\":)\" ></a>")

这一行将产生:

"<a href=\"javascript:void(0)\" class=\"EmojiesIcon\" id=\"smiley\" title=\":)\" ></a>"

现在,当您到达下一行时,您将替换:v的所有实例,其中包括您从第一行获得的javascript**:v**oid,例如:

 // msg is now the replaced string:
 msg = "<a href=\"javascript:void(0)\" class=\"EmojiesIcon\" id=\"smiley\" title=\":)\" ></a>";
 msg.Replace(":v",
            "<a href=\"javascript:void(0)\" class=\"EmojiesIcon\" id=\"pacman\" title=\":v\"></a>"
 );

因此,你得到:

msg = "<a href="javascript<a href="javascript:void(0)" class="EmojiesIcon"
id="pacman" title=":v"></a>oid(0)" class="EmojiesIcon" id="smiley"
title=":)" ></a>";

您可能需要考虑使用HtmlAgilityPack来处理HTML数据。它比简单的替换功能强大得多。