2009-08-21 2 views
0

Visual Basic에서 사용되는 분할 함수와 관련하여 질문이있었습니다. 지금은 문자열 값을 가져 오는 함수를 작성했습니다. 반환 된 문자열 값은 아마도 "List1; List2; Field1, Field2"처럼 보일 것입니다. 내 목표는이 문자열에 대한 split 함수를 사용하여 모든 목록을 한 배열에 저장하고 다른 배열에 필드를 넣는 것입니다.두 배열에 대한 분할 함수 조작

문제는 List2와 Field1 사이에 있습니다. Field1을 목록 배열에 배치하지 않습니다. 구문 분석을 통해이 작업을 수행 할 수있는 방법이 있다고 생각하지만 잘 모르겠습니다. 아래에 현재 코드가 있습니다. 모든 도움을 미리 감사드립니다.

 Dim s As String = GetSetting("ReOrderList", properties.SiteId) 
     Dim affectedLists() As String = s.Split(";") 
     Dim affectedFields() As String = s.Split(",") 
+0

"반환 된 문자열 값은 아마도"List1; List2; Field1, Field2 "." 와우, 잔인 하네. 해당 코드에 액세스 할 수 있습니까? 더 일관된 문자열을 반환하거나 문자열을 생성하는 함수로 두 개의 배열을 반환 할 수 있습니까? – Juliet

답변

0

목록 앞에 필드가 올 것임을 알고 있다면 마지막 ';'에서 문자열을 잘라낼 수 있습니다. 문자 :

Dim splitPos As Integer = input.LastIndexOf(";"c) 
Dim lists As String = input.Substring(0, splitPos+1) 
Dim fields As String = input.Substring(splitPos+1, input.Length - (splitPos+1)) 

그러면 목록 및 필드를 개별적으로 작업 할 수 있습니다.

0

문자열을 나눌 위치를 찾으려면을 (를) 사용하십시오.

Imports System 

Class Test 
    Shared Sub Main() 

     Dim sample As String = "List1;List2; Field1,Field2" 

     Dim middle As Int32 = sample.LastIndexOf(";") 

     Dim lists As String = sample.Substring(0, middle).Trim() 
     Dim fields As String = sample.Substring(middle + 1).Trim() 

     Dim affectedLists As String() = lists.Split(";"C) 
     Dim affectedFields As String() = fields.Split(","C) 

    End Sub 
End Class 
+0

모두에게 감사드립니다. 내가 얼마나 빨리 답을 얻었는지 믿을 수 없었다. –