繁体   English   中英

如何使用原始匹配值替换字符串

[英]How to replace a string using the original matched value

我试图通过在搜索到的字符串中包装<span class="highlight"></span><span class="highlight"></span>字符串。

做了一个简单的扩展方法为:

public static string Highlight(this string source, string highlightString)
{
    var regex = new Regex(highlightString, RegexOptions.IgnoreCase);
    var r = regex.Replace(
                source, 
                "<span class=\"highlight\">" + highlightString + "</span>");

    return r;
}

工作正常,但我真正想做的是在原始匹配中应用包装。

照原样,如果我搜索旅行,我得到的结果

<span class="highlight">trip</span> Nordic

我真正想要的是

<span class="highlight">Trip</span> Nordic

因为原始的字符串是Trip Nordic

如何替换匹配的字符串的原始部分,而不是我要搜索的字符串?

麻烦的是, regex没有任何属性可以告诉我所找到的内容(作为原始字符串),甚至不告诉我找到匹配项的位置...

如果我理解正确,则可以使用替换

public static string Highlight(this string source, string highlightString)
{
    var regex = new Regex(highlightString, RegexOptions.IgnoreCase);
    var r = regex.Replace(
            source, 
            "<span class=\"highlight\">$&</span>");
}

输出:

<span class="highlight">Trip</span> Nordic
regex.Replace(
            source, 
            "<span class=\"highlight\">$0</span>");

应该也可以。

$ 0 =组零=完全匹配

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM