c# - 搜索字符串并替换字符串的部分内容

标签 c# .net

我有一个字符串,其中包含一些随机文本以及 0 个或多个 span 标签。

像这样。

Hey <span class="OverLayStyle" style="background-color:#d8dfea">@Peter</span> and <span class="OverLayStyle" style="background-color:#d8dfea">@cara</span> 

Do you like <span class="OverLayStyle" style="background-color:#d8dfea">#Facebook</span>  or <span class="OverLayStyle" style="background-color:#d8dfea">#Google</span> ?

我想取出包含@的span标签并将其替换为a标签,如下所示:

<span class="OverLayStyle" style="background-color:#d8dfea">@Peter</span>

收件人:

<a href="" class="OverLayStyle" style="background-color:#d8dfea">@Peter</a>

可以做这样的事情吗?

最佳答案

你可以这样做:

var line = @"
<span class=""OverLayStyle"" style=""background-color:#d8dfea"">@Peter</span>
<span class=""OverLayStyle"" style=""background-color:#d8dfea"">Peter</span>
<span class=""OverLayStyle"" style=""background-color:#d8dfea""><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="20534f4d454f4e45604558414d504c450e434f4d" rel="noreferrer noopener nofollow">[email protected]</a></span>
<span class=""OverLayStyle"" style=""background-color:#d8dfea"">@Peter</span>";

var replaced = Regex.Replace(
    line,
    "<span.*?>@+.*?</span>",
    match => match.Value
             .Replace("span ", "a href=\"\" ")
             .Replace("/span>", "/a>"));


Gives:
  <a href="" class="OverLayStyle" style="background-color:#d8dfea">@Peter</a>
  <span class="OverLayStyle" style="background-color:#d8dfea">Peter</span>
  <span class="OverLayStyle" style="background-color:#d8dfea"><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cfbca0a2aaa0a1aa8faab7aea2bfa3aae1aca0a2" rel="noreferrer noopener nofollow">[email protected]</a></span>
  <a href="" class="OverLayStyle" style="background-color:#d8dfea">@Peter</a>

仅当内容以 @ 开头时,才会替换 span 标签

关于c# - 搜索字符串并替换字符串的部分内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33297191/

相关文章:

c# - Windows 8 - 在 For 循环中异步等待时出现线程错误

c# - Rabbitmq 中的多生产者、多消费者和单队列

c# - HTTP Web 请求包装器/帮助器库

c# - Entity Framework 3.5 动态创建实体

C# 发布目录保持为空

c# - 如果使用 C# 表达式(或抛出错误),则在 Visual Studio 中警告开发人员

c# - 处理 SymmetricAlgorithm 时 "try-finally" block 与 "using" block

c# - 在 C# 中操作 Word 2007 文档 XML

c# - 取消订阅子对象 Prop 更改事件

.net - SubmitChanges() 后紧跟一个存储过程