无法替换C#中的字符串上的文本

时间:2016-06-17 04:33:25

标签: c# string

我的字符串如下:

          Student 12:00AMLeoPan        Final points        
<!--<div class='icon displayOn' ><span onclick=';' title=''></span></div>-->0.5
      &nbsp;         2.00<!--<div class='icon'><spanonclick='' title=''></span></div>-->    

我想将字符串StartWith <!--<div替换为</div>-->,将字符串&nbsp替换为""值。

我尝试使用我的代码:

string finalResult = Regex.Replace(abc, "<!--<div" + ".*</div>-->&nbsp;", "")
                          .Replace("<!--<div" + ".*</div>-->", "")
                          .Replace("&nbsp;", "");`

Regex.Replace无法取代。

如何删除此字符串?感谢。

更新1:

谢谢,@ Mark。

我试过:.Replace("<!--<div" + ".*</div>-->", "")

它删除所有:

<!--<div class='icon displayOn' ><span onclick=';' title=''></span></div>-->0.5 &nbsp; 2.00<!--<div class='icon'><spanonclick='' title=''></span></div>-->

仅限结果:Student 12:00AMLeoPan Final points

您可以看到我有两个开头:<!--<div并以</div>-->结束。

但它取代了所有。并希望最终结果显示如下:

Student 12:00AMLeoPan Final points 0.5 &nbsp; 2.00

1 个答案:

答案 0 :(得分:6)

Regex.Replace会返回string,因此您的第2和第3 Replace次来电实际上正在调用String.Replace,这不支持正则表达式。不要串联呼叫 - 每次都明确地调用Regex.Replace,例如

string r1 = Regex.Replace(abc, "<!--<div.*?</div>-->&nbsp;", "");
string r2 = Regex.Replace(r1, "<!--<div.*?</div>-->", "");
string finalResult = Regex.Replace(r2, "&nbsp;", "");

更新:正如@WhoIsRich在对该问题的评论中提到的那样,正则表达式被修改为非贪婪。