none
【請教】關於 SPlit 跟 陣列長度 RRS feed

  • 問題

  • 各位神人好
    我想要了解一下 為什麼我以下的字串 在陣列中 會是7(Label1.Text)
    Dim TestString As String = "  4419    1928435716"
            Dim TestArray() As String = Split(TestString)
            Label1.Text = TestArray.Length 
    2010年11月3日 上午 05:21

解答

  • 不是,是這樣

    s[0] = X

    s[1] = X

    s[2] = 4419

    s[3] = X

    s[4] = X

    s[5] = X

    s[6] = 1928435716

    • 已標示為解答 Rickyjim 2010年11月3日 上午 07:49
    2010年11月3日 上午 06:46
  • 1. 那些X並不是空格, 而是string.empty, 也就是空字元

    Split 函式在一個資料列中遇到兩個分隔符號,或是在字串開頭或結尾位置遇到一個分隔符號時,都會將這些分符號解譯為空白字串 ("")。例如,Split("xx", "x") 會傳回包含三個空白字串的陣列:一個來自字串開頭與第一個 "x" 之間、一個來自兩個 "x" 字串之間,而第三個則是來自最後一個 "x" 與字串結尾之間。

    2. 先瞭解了1.的說法後, 為什麼少一個的答案就出來了, 看起來Split函式是用遞迴的方式在跑, 所以接在4419後方的空白正好不是開頭或結尾, 所以就被消掉了.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 Rickyjim 2010年11月3日 上午 07:54
    2010年11月3日 上午 07:48
    版主

所有回覆

  • 因為4419前有兩個空格, 後有四個空格, 加上4419與1928435716, 總共8個資料, 所以 TestArray.Length =7
    2010年11月3日 上午 06:22
  • 所以是這樣嗎~ X = 空格

    s[0] = X

    s[1] = X

    s[2] = 4419

    s[3] = X

    s[4] = X

    s[5] = X

    s[6] = X

    s[7] = 1928435716

    所以陣列S的長度是抓有幾格個陣列 所以是 "7"?

    那這樣的話 我Split後~抓S[7]的話 應該是1928435716

    但是 VB回報錯誤 但是我抓S[2]是正確的 WHY@@?

    2010年11月3日 上午 06:37
  • 不是,是這樣

    s[0] = X

    s[1] = X

    s[2] = 4419

    s[3] = X

    s[4] = X

    s[5] = X

    s[6] = 1928435716

    • 已標示為解答 Rickyjim 2010年11月3日 上午 07:49
    2010年11月3日 上午 06:46
  • 不是,是這樣

    s[0] = X

    s[1] = X

    s[2] = 4419

    s[3] = X

    s[4] = X

    s[5] = X

    s[6] = 1928435716

    對不起 中間那邊不是四個空格嗎?另一個到哪裡去了 ?

    不好意思 ~ 雖然我知道可以用UBound跟Length去避免所引錯誤

    但是我想知道Split怎麼去抓的

    麻煩請教導一下嚕^^|||

    2010年11月3日 上午 06:51
  • 你用的是這個http://msdn.microsoft.com/zh-tw/library/microsoft.visualbasic.strings.split(VS.80).aspx

    所以不是用空字串去切,而是用空白去切,切出來就會是七個

    索引鍵就會是0~6

    2010年11月3日 上午 07:36
  • 1. 那些X並不是空格, 而是string.empty, 也就是空字元

    Split 函式在一個資料列中遇到兩個分隔符號,或是在字串開頭或結尾位置遇到一個分隔符號時,都會將這些分符號解譯為空白字串 ("")。例如,Split("xx", "x") 會傳回包含三個空白字串的陣列:一個來自字串開頭與第一個 "x" 之間、一個來自兩個 "x" 字串之間,而第三個則是來自最後一個 "x" 與字串結尾之間。

    2. 先瞭解了1.的說法後, 為什麼少一個的答案就出來了, 看起來Split函式是用遞迴的方式在跑, 所以接在4419後方的空白正好不是開頭或結尾, 所以就被消掉了.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 Rickyjim 2010年11月3日 上午 07:54
    2010年11月3日 上午 07:48
    版主
  • 我上面不是回答你原因了嗎 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2010年11月3日 上午 07:50
    版主
  • 我上面不是回答你原因了嗎 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    不好意思 我回覆同時 你也回覆了 Sorry 我試著了解一下 感謝各位大哥回復~
    2010年11月3日 上午 07:52