摘要:Split分割字串
今天coding的時候需要用到分割字串的功能
像是 userId="user1,user2"-->user1跟user2
不過在撰寫的時候遇到前人已寫過的分割功能,結果發現有bug,以下做些說明
1.target.split("##")很危險
可以看得出來target##target2字串分割出來後,預想result()陣列應該是2個元素-->target1,target2
但是實際跑出來的結果卻是target1," ",target2 共三個元素
主要的原因可以在vs裡面看到,target.Split()丟進去的參數是char型態,但是在範列中是target.Split("##"),丟字串進去,結果.net接受了,
可能微軟接受傳string進去,但是在內部將string轉成char("##"-->"#"),所以target.Split("##")=target.Split("#"),所以split後才會多一個空白(##中間的空白)<--這邊
比較正確的寫法應該是,使用split(target,"##")或是 target.Split({"##"}, System.StringSplitOptions.RemoveEmptyEntries),注意target.split第一個參數要字串陣列
Dim splitSymbol As String = "##"
Dim target As String = "target1##target2"
'用法1
Dim result() As String = target.Split({"##"}, System.StringSplitOptions.RemoveEmptyEntries)
'用法2
Dim result1() As String = Split(target, "##")
2.target.Split({"##"}, System.StringSplitOptions.RemoveEmptyEntries) VS Split
用target.Split({"##"}, System.StringSplitOptions.RemoveEmptyEntries),會將你切割出來的陣列移除掉空值
實際運用如下表
目標分割字串 | target.Split | Split | 備註 | |
情況1 | "target1##target2##"(無空白) | target1,target2 | target1,target2," " | |
情況2 | "target1####target2"(無空白) | target1,target2 | target1," ",target2 | |
情況3 | "target1##target2## "(有空白) | target1,target2," " | target1,target2," " | 為什麼有這種情況還需研究 |
情況4 | "target1## ##target2"(有空白) | target1," ",target2 | target1," ",target2 |
(1)情況1"target1##target2##"(無空白)
(2)情況2"target1####target2"(無空白)
(3)情況3"target1##target2## "(有空白)