1. 程式人生 > >學習indexof和substring的用法

學習indexof和substring的用法

String.IndexOf

String.IndexOf 方法 (Char, Int32, Int32)
報告指定字元在此例項中的第一個匹配項的索引。搜尋從指定字元位置開始,並檢查指定數量的字元位置。
String.IndexOf(value, startIndex, count)

引數
value:要查詢的 Unicode 字元。
startIndex:搜尋起始位置。
count:要檢查的字元位置數。
返回值(Int32):
如果找到該字元,則為 value 的索引位置;否則如果未找到,則為 -1。


示例:
string str = "深圳市盈基實業有限公司國際通鄧事文*深圳市盈基實業有限公司國際通鄧事文";
Label1.Text = str.IndexOf("中國").ToString();//返回 -1
Label1.Text = str.IndexOf("盈基").ToString();//返回 3
Label1.Text = str.IndexOf("盈基",10).ToString();//返回21 說明:這是從第10個字元開始查起。
Label1.Text = str.IndexOf("鄧",15,10).ToString();//返回 -1
Label1.Text = str.IndexOf("鄧",15,20).ToString();//返回 -32 說明:從第15個字元開始查詢,要查詢的範圍是從第15個字元開始後20個字元,即從第15-35個字元中查詢。

String.LastIndexOf

String.LastIndexOf 方法
報告指定的 Unicode 字元或 String 在此例項中的最後一個匹配項的索引位置。

名稱 說明
String.LastIndexOf (Char) 報告指定 Unicode 字元在此例項中的最後一個匹配項的索引位置。
String.LastIndexOf (String) 報告指定的 String 在此例項內的最後一個匹配項的索引位置。
String.LastIndexOf (Char, Int32) 報告指定 Unicode 字元在此例項中的最後一個匹配項的索引位置。該搜尋從指定字元位置開始。
String.LastIndexOf (String, Int32)
報告指定的 String 在此例項內的最後一個匹配項的索引位置。該搜尋從指定字元位置開始。
String.LastIndexOf (String, StringComparison) 報告指定字串在當前 String 物件中最後一個匹配項的索引。一個引數指定要用於指定字串的搜尋型別。
String.LastIndexOf (Char, Int32, Int32) 報告指定的 Unicode 字元在此例項內的子字串中的最後一個匹配項的索引位置。搜尋從指定字元位置開始,並檢查指定數量的字元位置。
String.LastIndexOf (String, Int32, Int32) 報告指定的 String 在此例項內的最後一個匹配項的索引位置。搜尋從指定字元位置開始,並檢查指定數量的字元位置。
String.LastIndexOf (String, Int32, StringComparison) 報告指定字串在當前 String 物件中最後一個匹配項的索引。引數指定當前字串中的起始搜尋位置,以及要用於指定字串的搜尋型別。
String.LastIndexOf (String, Int32, Int32, StringComparison) 報告指定的 String 物件在此例項內的最後一個匹配項的索引位置。引數指定當前字串中的起始搜尋位置、要搜尋的當前字串中的字元數量,以及要用於指定字串的搜尋型別。


示例:
string str = "深圳市盈基實業有限公司國際通鄧事文*深圳市盈基實業有限公司國際通鄧事文";
Label1.Text = str.LastIndexOf("鄧文").ToString();//返回-1
Label1.Text = str.LastIndexOf("鄧").ToString();//返回32

Label1.Text = str.LastIndexOf("鄧",8).ToString();//返回-1
Label1.Text = str.LastIndexOf("鄧",20).ToString();//返回14
Label1.Text = str.LastIndexOf("鄧",33).ToString();//返回32
說明:在指定的範圍內查詢字元,這個範圍是上面的輸入的引數,理解為,從索引0開始到指定的數值位置範圍內查詢最後一個匹配的的字串的位置。示例中,0-8中沒有“鄧”字,所以返回-1,0-20範圍中,有一個“鄧”字在索引14位置上,0-33範圍中有兩個“鄧”字,因為LastIndexOf是返回最後一個匹配項索引位置,所以返32,而不是14。

String.Substring

String.Substring 方法
從此例項檢索子字串。

名稱 說明
String.Substring (Int32) 從此例項檢索子字串。子字串從指定的字元位置開始。
String.Substring (Int32, Int32) 從此例項檢索子字串。子字串從指定的字元位置開始且具有指定的長度。


示例:
string str = "深圳市盈基實業有限公司國際通鄧事文*深圳市盈基實業有限公司國際通鄧事文";
Label1.Text = str.Substring(11);//返回 “國際通鄧事文*深圳市盈基實業有限公司國際通鄧事文”
Label1.Text = str.Substring(11,7);//返回 “國際通鄧事文*”

總結一下:

IndexOf、LastIndexOf都是返回一個位置,是個整數值;找不到都返回-1;
IndexOf是從左向右查,LastIndexOf是從右向左查,不管是IndexOf還是LastIndexOf,索引序列都是從左到右的(起始值是0)
Substring是字串擷取,返回值是一個擷取後的字串。

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() 完全相同。

字元是從第0位置開始的


下面介紹 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的字串

再來一例:

String.SubString(int   index,int   length)  
  index:開始位置,從0開始    
  length:你要取的子字串的長度  

示例:

using System;
using System.Collections.Generic;
using System.Text;

namespace str_sub
{
class Program
{
static void Main(string[] args)
{
string myString = "Hello Word!";

//Substring()在C#中有兩個過載函式
//分別如下示例

string subString1 = myString.Substring(0);

//如果傳入引數為一個長整, 且大於等於0,
//則以這個長整的位置為起始,
//擷取之後餘下所有作為字串.
//如若傳入值小於0,
//系統會丟擲ArgumentOutOfRange異常
//表明引數範圍出界



string subString2 = myString.Substring(0, 5);

//如果傳入了兩個長整引數,
//前一個為引數子串在原串的起始位置
//後一個引數為子串的長度
//如不合條件同樣出現上述異常


Console.WriteLine(subString1);
Console.WriteLine(subString2);
Console.ReadLine();
}
}
}

程式輸出的結果:

Hello Word!
Hello