Trong kết quả tìm kiếm trên website của bạn bạn muốn thực làm nổi bật từ
khóa người dùng tìm kiếm. Bài viết này tôi minh họa cho các bạn cách
làm đơn giản với asp.net csharp.
Chúng ta sẽ xây dựng một hàm để xử lý từ khóa tìm kiếm sử dụng phương thức Regex của lớp System.Text.RegularExpressions. Hàm đó được viết như sau:
/// <summary>
/// Đánh dấu từ khóa với thuộc tính background-color
/// </summary>
/// <param name="text"></param>
/// <param name="keywords">Từ khóa tìm kiếm</param>
/// <param name="cssClass">Css style hoặc color đánh dấu từ khóa</param>
/// <returns>string</returns>
private string HighlightKeyWords(string text, string keywords, string cssClass)
{
if (text == String.Empty || keywords == String.Empty || cssClass == String.Empty)
return text;
var words = keywords.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
return words.Select( word => word.Trim()).Aggregate( text, (current, pattern) => Regex.Replace(current, pattern, string.Format("<span style=\"background-color:{0}\">{1}</span>", cssClass, "$0"), RegexOptions.IgnoreCase))
; return words.Select(word => "\\b" + word.Trim() + "\\b") .Aggregate(text, (current, pattern) => Regex.Replace(current, pattern, string.Format("<span style=\"background-color:{0}\">{1}</span>", cssClass, "$0"), RegexOptions.IgnoreCase));
}
Sử dụng: giả sử tôi sử dụng từ khóa là DNGAZ với đoạn văn bản như sau:
Khi đó kết quả nhận được là:
Chúng ta sẽ xây dựng một hàm để xử lý từ khóa tìm kiếm sử dụng phương thức Regex của lớp System.Text.RegularExpressions. Hàm đó được viết như sau:
/// <summary>
/// Đánh dấu từ khóa với thuộc tính background-color
/// </summary>
/// <param name="text"></param>
/// <param name="keywords">Từ khóa tìm kiếm</param>
/// <param name="cssClass">Css style hoặc color đánh dấu từ khóa</param>
/// <returns>string</returns>
private string HighlightKeyWords(string text, string keywords, string cssClass)
{
if (text == String.Empty || keywords == String.Empty || cssClass == String.Empty)
return text;
var words = keywords.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
return words.Select( word => word.Trim()).Aggregate( text, (current, pattern) => Regex.Replace(current, pattern, string.Format("<span style=\"background-color:{0}\">{1}</span>", cssClass, "$0"), RegexOptions.IgnoreCase))
; return words.Select(word => "\\b" + word.Trim() + "\\b") .Aggregate(text, (current, pattern) => Regex.Replace(current, pattern, string.Format("<span style=\"background-color:{0}\">{1}</span>", cssClass, "$0"), RegexOptions.IgnoreCase));
}
Sử dụng: giả sử tôi sử dụng từ khóa là DNGAZ với đoạn văn bản như sau:
string str = @"
Hiện nay Diễn đàn Đà Nẵng - DNGAZ.com rất cần một lực lượng điều hành diễn đàn có năng lực, tâm huyết và hiểu biết về kỹ thuật cũng như nắm bắt kịp thời tin tức Đà Nẵng, tâm lý xã hội, vân vân và vân vân. Thay mặt BQT DNGAZ thông báo tuyển những thành viên có khả năng tham gia vào đội ngũ điều hành góp phần vào công việc quản lý và phát triển website. ";
Label1.Text = HighlightKeyWords(str, "DNGAZ", "yellow");
Hiện nay Diễn đàn Đà Nẵng - DNGAZ.com rất cần một lực lượng điều hành diễn đàn có năng lực, tâm huyết và hiểu biết về kỹ thuật cũng như nắm bắt kịp thời tin tức Đà Nẵng, tâm lý xã hội, vân vân và vân vân. Thay mặt BQT DNGAZ thông báo tuyển những thành viên có khả năng tham gia vào đội ngũ điều hành góp phần vào công việc quản lý và phát triển website. ";
Label1.Text = HighlightKeyWords(str, "DNGAZ", "yellow");
Hiện nay Diễn đàn Đà Nẵng - DNGAZ.com
rất cần một lực lượng điều hành diễn đàn có năng lực, tâm huyết và hiểu
biết về kỹ thuật cũng như nắm bắt kịp thời tin tức Đà Nẵng, tâm lý xã
hội, vân vân và vân vân. Thay mặt BQT DNGAZ thông
báo tuyển những thành viên có khả năng tham gia vào đội ngũ điều hành
góp phần vào công việc quản lý và phát triển website.




0 comments:
Post a Comment