5 Temmuz 2015 Pazar

Arama Sonuçları Bulunan vurgulama Anahtar Kelimeler

/// <summary>
/// Wraps matched strings in HTML span elements styled with a background-color
/// </summary>
/// <param name="text"></param>
/// <param name="keywords">Comma-separated list of strings to be highlighted</param>
/// <param name="cssClass">The Css color to apply</param>
/// <param name="fullMatch">false for returning all matches, true for whole word matches only</param>
/// <returns>string</returns>
public static string HighlightKeyWords(this string text, string keywords, string cssClass, bool fullMatch)
{
  if (text == String.Empty || keywords == String.Empty || cssClass == String.Empty)
    return text;
  var words = keywords.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
  if (!fullMatch)
    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));

}
yöntem Regex kullanır, böylece bir sınıfa eklemek zaman, System.Text.RegularExpressions başvuru emin olun.Gördüğünüz gibi, bir yayılma alanına bir arka plan rengi uygular, böylece geçerli bir CSS rengi geçerli bir renge kontrol etmek için yönteme herhangi doğrulama eklememiş. Geçirilen gerekiyor, ama çok zor olmaz yapmak. Hex renkler için test 6 karakter, sayı (0-9) ya da harfler (af) olacaktır. RGB renk 0 ile 255 arasındaki sayıların Ve 3 set oluşmaktadır en tarayıcılar tarafından desteklenen, çok SVGA renkli isimleri kabul etmek isteyebilirsiniz, ancak 16 HTML renk adları sonlu listesi vardır. Daha fazla bilgi olabilir renklere Burada bulunan . Alternatif olarak, argüman CSS sınıf adı yerine bir renk olabilir ki bu yöntem üreten html değiştirebilir.
Olduğu gibi, burada View aşağıdaki geçecek nerede MVC içinde nasıl kullanılacağını var:

ViewData [ "temp" ] = "aster hızlı sıva mastering tahminci." ;

Görünüm kendi içinde, tam kelime kullanarak seçeneği eşleşir:
< div > <% = ViewData [ "temp" ] .ToString (). HighlightKeyWords ( "aster" , "sarı" , true ) %> </ div >


hangi aşağıdaki sonucu verir:
Değişen true için false bu güzel sonuçlar:
Web Formları yöntemini kullanarak çok kolay. Bir arama sonucu bir ItemTemplate ile veri sınırlama denetime geçilmiştir varsayarsak, burada görünebilir nasıl:
< ItemTemplate > 
   < asp : Label ID = "Label1" runat = "server" Text = ' <% . # Eval ("mySearchResult") ToString () HighlightKeyWords (. "aster" , "sarı" , true ) %> '/ > 
</ ItemTemplate >

Hiç yorum yok: