用粗体标签在短语周围添加单词

时间:2019-04-22 07:43:15

标签: c# asp.net webforms

我正在尝试模仿Google显示相关搜索结果的方式。

假设我搜索了“小部件”。

在Google提出的相关术语中,除搜索词以外的所有单词都以粗体显示。

他们这样做的方法是在其他位上附加一个<b>标签。

以下是一些基于搜索词小工具的示例:

术语:蓝色小部件

<b>blue</b> widgets

结果:蓝色小部件

术语:汽车小部件

widgets <b>for cars</b>

结果:用于汽车的小部件

术语:热爱小部件的真正男人的大部件

<b>big</b widgets <b>for real men with a love for</b> widgets

结果:小部件献给热爱小部件的真实男人

我正在Asp.Net c#中工作,没有理由不应该在代码中完成此操作,不是javascript -问题是我想不出一种方法它!

任何人以前都做过这样的事情,可以提供一些建议吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用negative lookahead来否定单词并得到所有否定词,然后使用Regex.Replace将其替换为包含<b>标签。

public static class Program
{
        private static void Main(string[] args)
        {

            string input = @"
            blue widgets

            widgets for cars

            big widgets for real men";

            string pattern = @"(?!widgets\b)\b\w+";

            string res = Regex.Replace(input, pattern, (match) =>
            {
                return $"<b>{match}</b>";
            });

            Console.WriteLine(res);
        }
    }
}

输出:

<b>blue</b> widgets

widgets <b>for</b> <b>cars</b>

<b>big</b> widgets <b>for</b> <b>real</b> <b>men</b>