asp.net中字串切割split函數用法

來源:互聯網
上載者:User

文法


Split(expression[, delimiter[, count[, start]]])


Split 函數的文法有以下參數:


expression 必選。字串運算式,包含子字串和分隔字元。如果 expression 為零長度字串,Split 返回空數組,即不包含元素和資料的數組。


delimiter 可選。用於標識子字串界限的字元。如果省略,使用空格 ("") 作為分隔字元。如果 delimiter 為零長度字串,則返回包含整個 expression 字串的單元素數組。


count 可選。被返回的子字串數目,-1 指示返回所有子字串。


compare 可選。指示在計運算元字串時使用的比較類型的數值。compare 參數可以有以下值:
 

vbBinaryCompare 0 執行二進位比較。
vbTextCompare 1 執行文本比較。
 

String.Split 方法有6個重載函數:
 

1) public string[] Split(params char[] separator)
2) public string[] Split(char[] separator, int count)
3) public string[] Split(char[] separator, StringSplitOptions options)
4) public string[] Split(string[] separator, StringSplitOptions options)
5) public string[] Split(char[] separator, int count, StringSplitOptions options)
6) public string[] Split(string[] separator, int count, StringSplitOptions options)

下面看執行個體


一、引入命名空間

using System.Text.RegularExpressions;

1、用字串分隔:

 代碼如下 複製代碼

string str="aaajsbbbjsccc";
string[] sArray=Regex.Split(str,"js",RegexOptions.IgnoreCase);
foreach (string i in sArray) Response.Write(i.ToString() + "<br>");

輸出結果:
aaa
bbb
ccc

2、用多個字元來分隔:

 代碼如下 複製代碼

string str="aaajbbbscccjdddseee";
string[] sArray=str.Split(new char[2]{'j','s'});
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");

輸出結果:
aaa
bbb
ccc
ddd
eee

3、用單個字元來分隔:

 代碼如下 複製代碼

string str="aaajbbbjccc";
string[] sArray=str.Split('j');
foreach(string i in sArray) Response.Write(i.ToString() + "<br>");

輸出結果:
aaa
bbb
ccc

例一:用單符號分隔字串,用split函數拆分。

執行個體字串:aaaa|ccccc|dddd|eeeee|ffff

代碼如下:

 代碼如下 複製代碼

        string str = "aaaa|ccccc|dddd|eeeee|ffff";
        string[] array = str.Split('|');
        foreach (string i in array) Response.Write(i+"<br />");

輸出結果:

aaaa
ccccc
dddd
eeeee
ffff

Split函數裡面我們傳入的是一個char型,所以必須要用單引號而不能寫成:str.Split("|") 應用的重載如下:

 

例二:用多字元分隔字串,用split分組拆分。

執行個體字串:aaaa|ccccc,dddd,eeeee|ffff

代碼如下:

 代碼如下 複製代碼

        string str = "aaaa|ccccc,dddd,eeeee|ffff";
        string[] array = str.Split(new char[2] { '|', ','});
        foreach (string i in array) Response.Write(i+"<br />");
輸出結果:

aaaa
ccccc
dddd
eeeee
ffff

因為在Split裡面需要的參數是一個char型數組,所以我們可以一次性傳入多個char字元,如果我們的字串用不同的符號分隔的,那麼我們就可以用這個方法來完成字串的切分。

例三:字串分隔用正則的匹配split拆分。

執行個體字串:www.laozamao.comtiandaowww.baidu.comtiandaowww.lvyougang.com

大家看到這個字串很詭異,不過在現實情況中我們還真有可能遇到這樣的,那就是用字串分隔的,非單個字元。例如本例中我們用tiandao這樣的字串來分隔,那麼這時候用字串的split函數我們就很難做到了,不過沒關係,我們可以用正則中的split來完成這個功能。代碼如下:

首先引用名字空間:using System.Text.RegularExpressions;

 代碼如下 複製代碼

        string str = "www.111cn.nettiandaowww.baidu.comtiandaowww.111cn.net";
        string[] sArray = Regex.Split(str, "tiandao", RegexOptions.IgnoreCase);
        foreach (string i in sArray) Response.Write(i.ToString() + "<br />");
輸出結果:

www.111cn.net
www.baidu.com
www.111cn.net

擴充方法講解

在上面的三個例子中我樣已經基本把字串分隔中遇到的情況差不多都講解了,但是其中遺漏了這樣一種情況:空元素

也就是說在分隔之後我們有可能得到一組空資料,通常我們的做法是在得到結果的時候判斷是否為空白,然後再做處理,其實在split函數裡已經提供了空元素的解決方案,那就是split的第二個參數:StringSplitOptions,這是一個枚舉類型,我們來看一下他的值:

 

第一個:None是傳回值包括含有Null 字元串的數組元素

 

第二個:RemoveEmptyEntries是傳回值不包括含有Null 字元串的數組元素

現在我們再返回來看字串的Split函數,發現他有六次重載,這六次重載中第一個參數有兩種變化,char型和string型數組,第二個參數是返回個數,如我分隔之後有五個,那麼我只需要前三個,就可以在第二個參數傳值限制返回個數,這個就不再詳細的講解了,重點第三個枚舉的兩種狀態我們做一個小測試:

例四:在split函數中包含空元素。

執行個體字串:aaaa,,aaa,aaa,aaa,,,,aaa

代碼如下:

 代碼如下 複製代碼

        string str = "aaaa,,aaa,aaa,aaa,,,,aaa";
        string[] array = str.Split(new char[1]{','}, StringSplitOptions.None);
        foreach (string i in array) Response.Write(i + "<br />");
我們第二個參數傳的是包含空元素,那麼得到的結果是:

aaaa

aaa
aaa
aaa

 

aaa

如果我們把代碼改一下:

 代碼如下 複製代碼

        string str = "aaaa,,aaa,aaa,aaa,,,,aaa";
        string[] array = str.Split(new char[1]{','}, StringSplitOptions.RemoveEmptyEntries);
        foreach (string i in array) Response.Write(i + "<br />");
輸出結果:

aaaa
aaa
aaa
aaa
aaa

這樣我們就不需要去另外加判斷是否為空白字串了,所以說這是一個很實用的功能。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.