我已经构建了一个小小的ASP.NET表单,用于搜索并显示结果。我想突出显示搜索结果中的搜索字符串。例子:
Query: "p"
Results: a<b>p</b>ple, banana, <b>p</b>lum
我得到的代码如下:
public static string HighlightSubstring(string text, string substring)
{
var index = text.IndexOf(substring, StringComparison.CurrentCultureIgnoreCase);
if(index == -1) return HttpUtility.HtmlEncode(text);
string p0, p1, p2;
text.SplitAt(index, index + substring.Length, out p0, out p1, out p2);
return HttpUtility.HtmlEncode(p0) + "<b>" + HttpUtility.HtmlEncode(p1) + "</b>" + HttpUtility.HtmlEncode(p2);
}
我大部分时间都在工作,但尝试一下例如
HighlightSubstring("Ã", "ss")
. 这是因为在德国
“_”和“ss”被认为是相等的。
由
IndexOf
方法,
但是它们的长度不同
!
现在,如果有办法找出“文本”中的匹配长度,那就没问题了。记住这个长度可以是
!= substring.Length
.
那我怎么才能知道比赛的长度呢?
索引
在有连接符和外来语言字符的情况下生成(在本例中是连接符)?