我有一个字符串,其中包含一些随机文本以及 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/