Split分割字串

  • 7303
  • 0

摘要: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##      "(有空白)


(4)情況4"target1##      ##target2"(有空白)