none
關於 string 轉 string(,) 問題 RRS feed

  • 問題

  • HI,假設有個字串 str

    123/xxx/xxx
    xxxxx/xxxx/xxxxx
    xxx/xxxxxxxxx/xxxxxx

    我想用 str.ToStrArray2D(vbnewline,"/")(0,0) 取得 123

    以下是我的程式碼

     <Extension>
        Public Function ToStrArray2D(str As String, SepY As String, SepX As String) As String(,)
            Dim nstr As String(,)
    
            Dim ly As String() = Split(str, SepY) 'xxx/xxxxxxxxx/xxxxxxxxx
    
            For i = 0 To ly.Count - 1
    
                Dim lx As String() = Split(ly(i), SepX) 'xxx xxxxxxxxx xxxxxxxxx
    
                For j = 0 To lx.Count - 1
                    nstr(i, j) = lx(j)
                Next
    
            Next
    
            ToStrArray2D = nstr
        End Function

     但是出現錯誤,大意是說
     nstr(i, j)

    為null,要怎樣才能解決?

    2015年12月31日 上午 03:59

解答

  • List 是用 Add 方法加入元素.

    List<t>類別</t>


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 CarbonDiarox 2016年1月1日 上午 06:33
    2015年12月31日 上午 11:51
    版主
  • 線上手冊搜尋不規則陣列。
    Dim a1d() As String = Spilt(yourStr, vbNewLine)
    Dim a2d(a1d.Length - 1) As Object 
    For i As Integer = 0 To a1d.Length - 1
       a2d(i) = Spilt(a1d(i), "/")
    Next
    Return a2d
    
    ' a2d(0)(0) 為所求


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 CarbonDiarox 2016年1月1日 上午 06:32
    2015年12月31日 下午 02:51

所有回覆

  • 你的 nstr 變數並沒有給他陣列大小. 所以他只會指向 null

    Visual Basic 中的多維陣列

    你為什麼不乾脆用 List(of string,string) ?


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2015年12月31日 上午 04:10
    版主
  • 請將:

    Dim nstr As String(,)

    改成:

    Dim nstr(3, 3) As String

    如果3列 3欄不夠存放, 請自行調整成較大的數字

    2015年12月31日 上午 04:18
  • (舉手

    如果預設Dim nstr(500, 500) As String
    假設 nstr(0,n) 是放入 xxx/xxxx/xxxx/xxx

    所以,n只有在0~3才有值,後面都沒有。

    我要怎樣才拿到當x=0時,y最大值是=3 這個"3"的項目最大值?

    2015年12月31日 上午 04:50
  • 尋找List(of string,string)用法中....
    2015年12月31日 上午 04:54
  • 我寫太快, 應該是 List(of List(of string))


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2015年12月31日 上午 05:37
    版主
  • 變成:

       Dim L As New List(Of List(Of String))
    
            Dim ll As String() = Split(Settings.S, vbNewLine) ' = xxx/xxx/xxx
            For i = 0 To ll.Count - 1
    
                Dim lw As String() = Split(ll(i), "/") ' =xxx
                For j = 0 To lw.Count - 1
    
                    L.Item(i).Item(j) = lw(j)
    
                Next
    
            Next

    出現錯誤:

    L.Item(i).Item(j) = lw(j)

    其他資訊: 索引超出範圍。必須為非負數且小於集合的大小。

    然後換成 1 to count

      L.Item(i+1).Item(j+1) = lw(j)

    也是錯誤。

    2015年12月31日 上午 07:31
  • List 是用 Add 方法加入元素.

    List<t>類別</t>


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 CarbonDiarox 2016年1月1日 上午 06:33
    2015年12月31日 上午 11:51
    版主
  • 線上手冊搜尋不規則陣列。
    Dim a1d() As String = Spilt(yourStr, vbNewLine)
    Dim a2d(a1d.Length - 1) As Object 
    For i As Integer = 0 To a1d.Length - 1
       a2d(i) = Spilt(a1d(i), "/")
    Next
    Return a2d
    
    ' a2d(0)(0) 為所求


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 CarbonDiarox 2016年1月1日 上午 06:32
    2015年12月31日 下午 02:51