[英]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.