C#中使用string.Split方法來(lái)分割字符串的注意事項(xiàng): string.Split給我們提供了非常靈活的使用方式, 但是如果使用不當(dāng), 會(huì)造成錯(cuò)誤, 最近在做code review時(shí), 看到大部分人這么使用: 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 其實(shí)他的本意是使用”|:|”將字符串分開(kāi)的, 目標(biāo)是為了得到數(shù)組: “A|B” 和 “C:D”, 但是沒(méi)有直接找到Split(string)的重載, 所有就是用了ToCharArray(), 很顯然, 得到的結(jié)果是錯(cuò)誤的.
正確的用法為: string[] ss1 = s.Split(new[] {"|:|"}, StringSplitOptions.None); //ss1[0]: A|B //ss1[1]: C:D
后一個(gè)參數(shù), 是標(biāo)志是否自動(dòng)remove empty的數(shù)據(jù). 例如: "A|B|:|C:D|:|" 做分割時(shí), 會(huì)返回三個(gè)數(shù)組, 該數(shù)組的最后一個(gè)元素是空"", 如果我們想過(guò)濾掉這些空的元素, 可以使用參數(shù): 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]: ""
|