學習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.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