【发布时间】:2010-10-08 20:43:48
【问题描述】:
我正在为 MVC C# 应用程序开发一个搜索功能,该应用程序将通过过滤器放置一个(可能很大的)文本块,并给出搜索查询,将放置一个带有突出显示样式的 html <span> 和在每个搜索词之后。
我有一个简单的算法,但我感觉它会很慢,可能是因为需要创建的字符串数量(2 * 匹配数)。
public static string Surround(string original, string head, string tail, string match, StringComparison comparer)
{
var ret = original;
if (ret.IndexOf(match, 0, comparer) != -1)
{
var lastIndex = 0;
while ((lastIndex = ret.IndexOf(match, lastIndex, comparer)) != -1)
{
ret = ret.Insert(lastIndex, head);
var tailIndex = lastIndex + match.Length + head.Length;
lastIndex = tailIndex;
ret = ret.Insert(tailIndex, tail);
}
}
return ret;
}
我想知道是否有人可以为更好的算法提供一些提示,以更好地处理大块文本?我正在考虑使用字符串生成器,但我也想到我可能会以完全错误的方式处理这个问题。任何见解将不胜感激。
【问题讨论】:
-
是 jQuery 的一个选项,还是必须在服务器端完成?
-
jQuery 确实可以作为一种选择,但我不知道我将如何处理它。由于这是一个数据格式问题,最好在视图(客户端)中进行。我也很想知道其他人对此的看法。