2013-02-01 2 views
3

문자열을 분할하고 분할 부분을 가져 와서 변수에 할당하려고합니다. 이 첫 번째 변수와 함께 잘 작동하지만 두 번째 변수를 작동시킬 수 없습니다. 행에서문자열 분할 및 변수에 값 할당

For Each columnQuarter As DataColumn In dt.Columns 
      Dim s As String = columnQuarter.ColumnName 
      Dim words As String() = s.Split("-") 
      Dim Year As String = words(0) 
      Dim Quarter As String = words(1) 
      Debug.WriteLine(Year) 
      Debug.WriteLine(Quarter) 

"희미한 분기로 문자열 = 단어 (1)"나는 얻을 오류 코드 "IndexOutofRangeException는 처리되지 않은이었다. 인덱스 배열의 범위를 벗어난 것입니다."

ColumnName의 예는 2012-Q1입니다.

추가 정보 : 여기

내가 내 데이터 테이블 내 열을 추가하는 데 사용하는 코드입니다. 보시다시피 처음 두 열에 "-"가 포함되지 않습니다. 첫 번째 두 개의 열이 대시가없는

tickerColumn = New DataColumn("Ticker", Type.GetType("System.String")) 
consistencyColumn = New DataColumn("Consistency", Type.GetType("System.Int32")) 
dt.Columns.Add(tickerColumn) 
dt.Columns.Add(consistencyColumn) 

    With Me 
     lr = Now.Year - 1901 
     For i = 1 To lr 
      column = New DataColumn 
      column.DataType = System.Type.GetType("System.Int32") 
      column.ColumnName = Now.Year - i & "-Q4" 
      dt.Columns.Add(column) 

      column = New DataColumn 
      column.DataType = System.Type.GetType("System.Int32") 
      column.ColumnName = Now.Year - i & "-Q3" 
      dt.Columns.Add(column) 

      column = New DataColumn 
      column.DataType = System.Type.GetType("System.Int32") 
      column.ColumnName = Now.Year - i & "-Q2" 
      dt.Columns.Add(column) 

      column = New DataColumn 
      column.DataType = System.Type.GetType("System.Int32") 
      column.ColumnName = Now.Year - i & "-Q1" 
      dt.Columns.Add(column) 
     Next i 
    End With 
+2

스플릿 호출 한 후 단어의 길이는 무엇입니까 ("-")을? 그리고 단어 (0)에 대한 가치는 무엇입니까? – openshac

+0

Split ("-")을 호출 한 후의 단어 길이는 2 글자 (Q1)가됩니다. 단어 (0)에 대한 값은 2012입니다. – gromit1

+1

DataTable의 ** 모든 ** 열에 하이픈이 있는지 확인 했습니까? 이 예외는 분할 배열에 두 번째 요소가 없다는 것을 의미합니다. –

답변

3

때문에, 그들을 필터링 시도 :

For Each columnQuarter As DataColumn In dt.Columns 
    Dim s As String = columnQuarter.ColumnName 
    If s.Contains("-") Then 
     Dim words As String() = s.Split("-") 
     Dim Year As String = words(0) 
     Dim Quarter As String = words(1) 
     Debug.WriteLine(Year) 
     Debug.WriteLine(Quarter) 
    End If 
Next 
+0

문제가 해결되었습니다. 대단히 감사합니다! – gromit1