C#中使用string.Split方法來分割字符串的注意事項:
string.Split給我們提供了非常靈活的使用方式,但是如果使用不當,會造成錯誤,最近在做代碼審查時,看到大部分人這麼使用:

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”,但是沒有直接找到斯普利特(串)的重載,所有就是用了ToCharArray(),很顯然,得到的結果是錯誤的。

正確的用法為:

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

後一個參數,是標誌是否自動刪除空的數據。例如:“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]: “"

 

Reference : http://www.360doc.com/content/10/0930/11/2788266_57515420.shtml

 

arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()