String.Split()函數

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   使用   ar   strong   資料   

我們在上次學習到了 String.Join函數(http://blog.csdn.net/zhvsby/archive/2008/11/28/3404704.aspx),當中用到了String.SPlit函數,所以能夠上網查了該函數的用法 例如以下:

 

#中使用string.Split方法來切割字串的注意事項:
string.Split
給我們提供了非常靈活的使用方式, 可是假設使用不當, 會造成錯誤, 近期在做code review時, 看到大部分人這麼使用:
            string s = "A|B|:|C:D";
            string[] ss = s.Split("|:|".ToCharArray());
            //ss[0]: A
            //ss[1]: B
            //ss[2]:
            //ss[3]:
            //ss[4]: C
            //ss[5]: D
事實上他的本意是使用”|:|”將字串分開的, 目標是為了得到數組: “A|B” 和 “C:D”, 可是沒有直接找到Split(string)的重載, 全部就是用了ToCharArray(), 非常顯然, 得到的結果是錯誤的.

正確的使用方法為:
            string[] ss1 = s.Split(new[] {"|:|"}, StringSplitOptions.None);
            //ss1[0]: A|B
            //ss1[1]: C:D

後一個參數, 是標誌是否自己主動remove empty的資料. 比如: "A|B|:|C:D|:|" 做切割時, 會返回三個數組, 該數組的最後一個元素是空"", 假設我們想過濾掉這些空的元素, 能夠使用參數: StringSplitOptions.RemoveEmptyEntries 即: string[] ss1 = s.Split(new[] {"|:|"}, StringSplitOptions.RemoveEmptyEntries);

範例:

            s = "A|B|:|C:D|:|";
            string[] ss1 = s.Split(new[] {"|:|"}, StringSplitOptions.RemoveEmptyEntries);
            //ss1[0]: "A|B"
            //ss1[1]: "C:D"

            ss1 = s.Split(new[] { "|:|" }, StringSplitOptions.None);
            //ss1[0]: "A|B"
            //ss1[1]: "C:D"
            //ss1[2]: ""

 

首先我們看下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) 下邊我們通過一些執行個體來說明下怎麼使用(下面string words = "1,2.3,,4";):

1. public string[] Split(params char[] separator)
程式碼 string[] split = words.Split(new Char[] { ‘,‘ });//返回:{"1","2.3","","4"}
string[] split = words.Split(new Char[] { ‘,‘, ‘.‘ });//返回:{"1","2","3","","4"}
2. public string[] Split(char[] separator, int count)
程式碼 string[] split = words.Split(new Char[] { ‘,‘, ‘.‘ }, 2);//返回:{"1","2.3,,4"}
string[] split = words.Split(new Char[] { ‘,‘, ‘.‘ }, 6);//返回:{"1","2","3","","4"}
3. public string[] Split(char[] separator, StringSplitOptions options)
程式碼 string[] split = words.Split(new Char[] { ‘,‘, ‘.‘ }, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2","3","4"} 不保留空元素
string[] split = words.Split(new Char[] { ‘,‘, ‘.‘ }, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
4. public string[] Split(string[] separator, StringSplitOptions options)
程式碼 string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2","3","4"} 不保留空元素
string[] split = words.Split(new string[] { ",", "." }, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
5. public string[] Split(char[] separator, int count, StringSplitOptions options)
程式碼 string[] split = words.Split(new Char[] { ‘,‘, ‘.‘ }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2.3,,4"} 不保留空元素
string[] split = words.Split(new Char[] { ‘,‘, ‘.‘ }, 6, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
6. public string[] Split(string[] separator, int count, StringSplitOptions options)
程式碼 string[] split = words.Split(new string[] { ",", "." }, 2, StringSplitOptions.RemoveEmptyEntries);//返回:{"1","2.3,,4"} 不保留空元素
string[] split = words.Split(new string[] { ",", "." }, 6, StringSplitOptions.None);//返回:{"1","2","3","","4"} 保留空元素
個人理解:Split 就是和String.Join相反的一個函數 它的作用是把一個字串分隔成含有多個欄位的數組我如今僅僅對上面的一種方法進行分析:string[] split = words.Split(new Char[] { ‘,‘, ‘.‘ }, 6);//返回:{"1","2","3","","4"} 為什麼返回的有了個空的“” 呢,自己當時也是不理解事實上它就是以" , " 和“ . " 兩個分隔字元來拆分 字串 1,2.3,,4的 當找到 3 後面的第一個”, “ 時候說明此處要分開了可是它後面又是一個分隔字元 ”, " 怎麼辦呢 這是就僅僅能當成 " " 空來處理了  你能夠變相的把  1,2.3,,4連續的兩個" , "間 覺得有個空格符“ “也能夠。不正確的地方請大家幫指出來 不勝感激 。


 


String.Split()函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.