1. 程式人生 > >C#中的Contains與IndexOf的區別

C#中的Contains與IndexOf的區別

 C#中要判斷一個字串是否包含另一個字串,常用的兩種方法是
str.Contains和str.IndexOf
這兩個方法的區別是:

Contains是找指定字串是否包含一個字串,返回值的boolean型別,即只有true和false

IndexOf有多個過載,但無論哪個,都是做一定的匹配,然後把匹配的第一個字元的位置返回,返回的是int型別,如果沒找到,那麼返回-1

IndexOf() 
查詢字串中指定字元或字串首次出現的位置,返首索引值,如: 
str1.IndexOf("字"); //查詢“字”在str1中的索引值(位置) 
str1.IndexOf("字串");//查詢“字串”的第一個字元在str1中的索引值(位置) 
str1.IndexOf("字",start,end);//從str1第start+1個字元起,查詢end個字元,查詢“字”在字串STR1中的位置[從第一個字元算起]注意:start+end不能大於str1的長度


indexof引數為string,在字串中尋找引數字串第一次出現的位置並返回該位置。如string s="0123dfdfdf";int i=s.indexof("df");這時i==4。 
如果需要更強大的字串解析功能應該用Regex類,使用正則表示式對字串進行匹配。






indexof() :在字串中從前向後定位字元和字串;所有的返回值都是指在字串的絕對位置,如為空則為- 1

string test="asdfjsdfjgkfasdsfsgfhgjgfjgdddd";

   test.indexof(’d’)       =2            //從前向後 定位 d 第一次出現的位置
   test.indexof(’d’,1)     =2           //從前向後 定位 d 從第三個字串 第一次出現的位置
   test.indexof(’d’,5,2)   =6      //從前向後 定位 d 從第5 位開始查,查2位,即 從第5位到第7位;

lastindexof() :在字串中從後向前定位字元和字串;、
用法和 indexof() 完全相同。


下面介紹   IndexOfAny ||lastindexofany

他們接受字元陣列做為變元,其他方法同上,返回陣列中任何一個字元最早出現的下標位置

如下

         char[] bbv={’s’,’c’,’b’};
         string abc = "acsdfgdfgchacscdsad";
        
         Response.Write(abc.IndexOfAny(bbv))=1
         Response.Write(abc.IndexOfAny(bbv, 5))=9
         Response.Write(abc.IndexOfAny(bbv, 5, 3))=9

lastindexofany 同上。
====================================================================
substring() 用法

string a="aadsfdjkfgklfdglfd"

a.substring(5)      //擷取從第五位以後的所有字串

a.substring(0,5)     //擷取從第0到第5 以後的所有字串