最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#判斷字符串中是否包含指定字符串及contains與indexof方法效率問題

 更新時間:2018年10月14日 11:51:15   作者:willingtolove  
這篇文章主要介紹了C#判斷字符串中是否包含指定字符串及contains與indexof方法效率問題 ,文中給大家列舉通過兩種方法來判斷,需要的朋友可以參考下

正文

 #方法一:使用string.Contains方法

  string.Contains是大小寫敏感的,如果要用該方法來判斷一個string是否包含某個關(guān)鍵字keyword,需要把這個string和這個keyword都轉(zhuǎn)成小寫或大寫再調(diào)用Contains方法;

 string key = "bbb";
 string temp = "aaaBBBcccDDD";
 bool isContains= temp.ToLower().Contains(key.ToLower());//true

#方法二:使用sring.Index方法

  使用string.Index方法,然后通過StringComparison.OrdinalIgnoreCase指定查找過程忽略大小寫;

 string key = "bbb";
 string temp = "aaaBBBcccDDD";
 bool isContains = temp.IndexOf(key,StringComparison.OrdinalIgnoreCase)>=0;//true

 #那什么時候使用Contains方法,什么時候使用Index方法,哪個效率高?

1、測試代碼:

  注:此測試針對的是擁有大量英文的情況下,并且指定的字符串為英文

  每個方法測試1千萬次,輸出所用時間;

class Program
  {
    private const int N = 10000000;
    private static Stopwatch watch = new Stopwatch();
    static void Main(string[] args)
    {
      string source = "aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqq";
      string target = "AAA";
      Console.WriteLine("目標(biāo)在開頭部分時:");
      Console.WriteLine("不區(qū)分大小寫:");
      TestContains(source, target,true);
      TestIndexOf(source, target,true);
      Console.WriteLine("區(qū)分大小寫:");
      target = "aaa";
      TestContains(source, target,false);
      TestIndexOf(source, target,false);
      Console.WriteLine();
      Console.WriteLine("目標(biāo)在中部時:");
      Console.WriteLine("不區(qū)分大小寫:");
      target = "HHH";
      TestContains(source, target, true);
      TestIndexOf(source, target, true);
      Console.WriteLine("區(qū)分大小寫:");
      target = "hhh";
      TestContains(source, target, false);
      TestIndexOf(source, target, false);
      Console.WriteLine();
      Console.WriteLine("目標(biāo)在結(jié)尾時:");
      Console.WriteLine("不區(qū)分大小寫:");
      target = "QQQ";
      TestContains(source, target,true);
      TestIndexOf(source, target,true);
      Console.WriteLine("區(qū)分大小寫:");
      target = "qqq";
      TestContains(source, target,false);
      TestIndexOf(source, target,false);
      Console.WriteLine("執(zhí)行完畢,按任意鍵退出...");
      Console.ReadKey();
    }
    private static void TestIndexOf(string source, string target,bool isIgnoreCase)
    {
      watch.Reset();
      watch.Start();
      for (int i = 0; i < N; i++)
      {
        if (isIgnoreCase)
          source.IndexOf(target, StringComparison.OrdinalIgnoreCase);
        else
          source.IndexOf(target);
      }
      watch.Stop();
      Console.WriteLine("IndexOf: " + watch.ElapsedMilliseconds.ToString() + "ms");
      return;
    }
    private static void TestContains(string source, string target,bool isIgnoreCase)
    {
      watch.Reset();
      watch.Start();
      for (int i = 0; i < N; i++)
      {
        if (isIgnoreCase)
          source.ToLower().Contains(target.ToLower());
        else
          source.Contains(target);
      }
      watch.Stop();
      Console.WriteLine("Contains: " + watch.ElapsedMilliseconds.ToString() + "ms");
      return;
    }
  }

2、測試結(jié)果:

3、總結(jié)

  1、從測試結(jié)果(大量測試)中能明顯看出,當(dāng)擁有大量英文的字符串中:

  *當(dāng)不區(qū)分大小寫時,string.IndexOf方法的效率明顯高于string.Contains方法;

  *當(dāng)區(qū)分大小寫時,string.Contains方法的效率明顯高于string.IndexOf方法;

  *如果判斷的是中文,沒有大小寫之分,還是string.Contains方法的效率高;

  2、綜合上述總結(jié),定義了一個String擴展方法,該方法包含一個StringComparison參數(shù),返回值為是否包含子字符串:

    參考:https://docs.microsoft.com/zh-cn/dotnet/api/system.string.contains?redirectedfrom=MSDN&view=netframework-4.5#System_String_Contains_System_String_

using System;
 public static class StringExtensions
 {
   public static bool Contains(this String str, String substring, 
                 StringComparison comp)
   {              
    if (substring == null)
      throw new ArgumentNullException("substring", 
                     "substring cannot be null.");
    else if (! Enum.IsDefined(typeof(StringComparison), comp))
     throw new ArgumentException("comp is not a member of StringComparison",
                   "comp");
    return str.IndexOf(substring, comp) >= ;           
  }
 }

using System;
public class Example
{
  public static void Main()
  {
   String s = "This is a string.";
   String sub1 = "this";
   Console.WriteLine("Does '{0}' contain '{1}'?", s, sub1);
   StringComparison comp = StringComparison.Ordinal;
   Console.WriteLine("  {0:G}: {1}", comp, s.Contains(sub1, comp));
   comp = StringComparison.OrdinalIgnoreCase;
   Console.WriteLine("  {0:G}: {1}", comp, s.Contains(sub1, comp));
  }
}
// The example displays the following output:
//    Does 'This is a string.' contain 'this'?
//     Ordinal: False
//     OrdinalIgnoreCase: True

總結(jié)

以上所述是小編給大家介紹的C#判斷字符串中是否包含指定字符串及contains與indexof方法效率問題,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!

相關(guān)文章

  • C#獲取所有進程的方法

    C#獲取所有進程的方法

    在本篇文章里小編給大家分享了關(guān)于C#獲取所有進程的方法和步驟,有需要的朋友們跟著學(xué)習(xí)參考下。
    2018-12-12
  • asp.net core項目mvc權(quán)限控制:分配權(quán)限

    asp.net core項目mvc權(quán)限控制:分配權(quán)限

    學(xué)習(xí)的最好方法就是動手去做,這里以開發(fā)一個普通的權(quán)限管理系統(tǒng)的方式來從零體驗和學(xué)習(xí)Asp.net Core。項目的整體規(guī)劃大致如下
    2017-02-02
  • 一個進程間通訊同步的C#框架引薦

    一個進程間通訊同步的C#框架引薦

    這篇文章主要介紹了一個進程間通訊同步的C#框架,代碼具有相當(dāng)?shù)姆€(wěn)定性和可維護性,隨著.NET的開源也會被注入更多活力,推薦!需要的朋友可以參考下
    2015-07-07
  • c#互斥鎖Mutex類用法介紹

    c#互斥鎖Mutex類用法介紹

    本文詳細講解了c#互斥鎖Mutex類的用法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量二

    C#編程自學(xué)之?dāng)?shù)據(jù)類型和變量二

    這篇文章繼續(xù)介紹了C#數(shù)據(jù)類型和變量,是對上一篇文章的補充,希望對大家的學(xué)習(xí)有所幫助。
    2015-10-10
  • C#實現(xiàn)char字符數(shù)組與字符串相互轉(zhuǎn)換的方法

    C#實現(xiàn)char字符數(shù)組與字符串相互轉(zhuǎn)換的方法

    這篇文章主要介紹了C#實現(xiàn)char字符數(shù)組與字符串相互轉(zhuǎn)換的方法,結(jié)合實例形式簡單分析了C#字符數(shù)組轉(zhuǎn)字符串及字符串轉(zhuǎn)字符數(shù)組的具體實現(xiàn)技巧,需要的朋友可以參考下
    2017-02-02
  • c# 刪除所有的空文件夾的小例子

    c# 刪除所有的空文件夾的小例子

    c# 刪除所有的空文件夾的小例子,需要的朋友可以參考一下
    2013-03-03
  • 一文掌握C# ListView控件的用法和示例代碼

    一文掌握C# ListView控件的用法和示例代碼

    ListView控件提供了豐富的屬性和事件,可以用于實現(xiàn)各種各樣的表格視圖,包括帶有單元格編輯、排序和分組等功能,本文介紹了一些常見的?ListView?控件的用法和示例代碼,感興趣的朋友一起看看吧
    2024-02-02
  • C#使用NPOI對Excel數(shù)據(jù)進行導(dǎo)入導(dǎo)出

    C#使用NPOI對Excel數(shù)據(jù)進行導(dǎo)入導(dǎo)出

    這篇文章介紹了C#使用NPOI對Excel數(shù)據(jù)進行導(dǎo)入導(dǎo)出的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C# 操作PostgreSQL 數(shù)據(jù)庫的示例代碼

    C# 操作PostgreSQL 數(shù)據(jù)庫的示例代碼

    本篇文章主要介紹了C# 操作PostgreSQL 數(shù)據(jù)庫的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論

北票市| 凤城市| 昌都县| 湖北省| 蒙城县| 鄄城县| 吉木萨尔县| 达拉特旗| 贡嘎县| 沽源县| 谷城县| 庆安县| 阳新县| 苏尼特左旗| 新营市| 盘锦市| 集贤县| 星座| 贡山| 滨州市| 昂仁县| 株洲市| 孟连| 交口县| 亳州市| 偏关县| 屯门区| 贵德县| 仁化县| 滁州市| 巴林右旗| 磴口县| 茂名市| 察雅县| 玉龙| 石屏县| 永丰县| 昌图县| 庆安县| 曲麻莱县| 彩票|