Maison  >  Article  >  développement back-end  >  C# implémente la récupération insensible à la casse et met en évidence le partage d'exemples de code

C# implémente la récupération insensible à la casse et met en évidence le partage d'exemples de code

黄舟
黄舟original
2017-03-28 11:45:491715parcourir

Cet article présente principalement les informations pertinentes sur la récupération C# insensible à la casse et les exemples surlignés, les amis dans le besoin peuvent se référer à

Récupération C# insensible Explication détaillée de la casse et de la surbrillance exemples

Aujourd'hui, j'ai rencontré un problème : Comment mettre en avant des mots-clés insensibles à la casse dans une page web

Par exemple : texte abcaBcabCaBCabcaBCa, mot-clé bc, en cas d'insensibilité, il y a 6 matchs au total.

Ensuite, ce qui est affiché sur la page Web est abcaBcabCaBCabcaBCa.

Beaucoup de gens pensent à la fonction de remplacement. Mais en C#, la fonction de remplacement ne peut pas résoudre le problème de la casse des lettres.

Par exemple, bc, Bc, bC et BC ont tous été recherchés, mais ils ne peuvent pas être remplacés par un seul texte

Le texte ci-dessus est reproduit de l'article de Daniel "Wancang Yimi " - -"Mettez en surbrillance les mots-clés insensibles à la casse - ASP".

Mais son article a été écrit dans la version ASP, et aujourd'hui j'écris la version C#, parlons de la solution ci-dessous ;

Solution : Utiliser IndexOf

IndexOf(String, Int32, StringComparison)

La chaîne spécifiée se trouve dans la chaîne actuelle L'index de la première occurrence dans l'objet.

Paramètres

value
类型: System. String 
要搜寻的字符串。
startIndex
类型: System. Int32 
搜索起始位置。
comparisonType
类型: System. StringComparison 
指定搜索规则的枚举值之一。
(OrdinalIgnoreCase:使用序号排序规则并忽略被比较字符串的大小写,对字符串进行比较。)

Code

/// <summary>
    /// 高亮查找关键字。
    /// </summary>
    /// <param name="str">文本。</param>
    /// <param name="keyword">关键字</param>
    /// <returns>含高亮标识的文本。</returns>
    /// <remarks>
    ///  1、字母不区分大小写。 
    ///  2、CssClass 名称为 highlight。
    /// </remarks>
    private string HighLightKeyword(string str, string keyword)
    {
      int index;
      var startIndex = 0;
      const string highLightBegin = "<span class=&#39;highlight&#39;>";
      const string highLightEnd = "</span>";
      var length = highLightBegin.Length + keyword.Length;
      var lengthHighlight = length + highLightEnd.Length;

      while ((index = str.IndexOf(keyword, startIndex, StringComparison.OrdinalIgnoreCase)) > -1)
      {
        str = str.Insert(index, highLightBegin).Insert(index + length, highLightEnd);
        startIndex = index + lengthHighlight;
      }

      return str;
    }

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn