2010-05-14 3 views
0

VB.NET에서 1 차원 문자열 배열을 조작 할 때 문제가 발생하여 도움을 받고 싶습니다.VB.NET 1 차원 문자열 배열 조작의 어려움

내 목표는 파일 경로에서 가능한 경우 4 개의 변수를 얻는 것입니다. 이 변수는 myCountry, myCity, myStreet, Filename입니다. 모두는 문자열로 선언됩니다. 파일 위치도 문자열로 선언됩니다. 그래서 나는이 :

Dim filePath As String 

내 문제를 설명하고, 내가 할 노력하고 무엇을, 나는 다음과 같은 예를 가지고 :

1

C를 : 내 \ 위치 \는 \ 영국입니다 \ \ 버밍엄 \ 여름 도로 \이 house.txt.

이 예에서 myCountry는 = UK입니다. myCity = 버밍엄. myStreet = 여름 길. 파일 이름 =이 house.txt

2

C : 내 위치 \를 \ 프랑스 \ 리옹 \ 그 house.txt을 \된다.

여기 myCountry = 프랑스. myCity = 리용. 거리가 없습니다. 파일 이름 = 그 house.txt

3

C : 내 위치 독일 \입니다 \ \ 다른 house.txt 여기

myCountry = 독일. 도시가 없다. 아니 거리. Filename = other house.txt

내가 말하고자하는 것은 내가 원하는 변수의 길이 나 위치에 대해 미리 알지 못한다는 것이다. 나는 또한 내가 길에서 도시 또는 거리 이름을 찾거나 얻을 것인지 알지 못합니다. 하지만 영국, 프랑스, ​​독일, 스페인, 이탈리아 등 5 가지 옵션 중 하나가 될 것입니다.

내 문제를 해결하기 위해, 내가 한 첫번째 일은이었다

Dim pathArr() As String = filePath.Split("\") 

내가 한 파일 이름을 얻으려면 :

FileName = pathArr.Last 

이 myCountry을 얻으려면을 내가 그랬어 :

If filePath.Contains("UK") Then 
     myCountry = "UK" 
    ElseIf filePath.Contains("France") Then 
     myCountry = "France" 
    ElseIf filePath.Contains("Germany") Then 
     myCountry = "Germany" 
    ElseIf filePath.Contains("Spain") Then 
     myCountry = "Spain" 
    ElseIf filePath.Contains("Italy") Then 
     myCountry = "Italy" 
    End If 

myCity와 myStreet (그리고 처음부터 문자열에 존재하는지 여부)를 알아 내려고 시도하면서 나는 다음과 같이 시작했습니다 :

Dim ind As Integer = Array.IndexOf(pathArr, myCountry) 

myCountry 문자열의 색인을 가져 오려면. 나는 거기에서 내 길을 갈 수 있다고 생각했지만, 나는 붙어 있고 다음에해야할 일을 모른다. 어떤 도움을 주시면 감사하겠습니다.

+0

정규식을 사용하여 경로를 구문 분석합니다. 나는 그러한 전문가가 아니므로 Regex를 사용하여 경로 문자열을 파싱하는 방법을 묻고 싶을 수도 있습니다. – m0s

답변

2

pathArr을 사용하는 것이 좋습니다. 색인 변수를 사용하여 구성 요소를 반복 할 수 있습니다. 다음 코드는 테스트되지 않았지만 시작해야합니다.

Dim countries As New String() {"UK", "France", "Germany", "Spain", "Italy"} 

Dim pathArr() As String = filePath.Split("\")    ' " <-- this is just to fix SO syntax highlighting 

' Find the component containing the country ' 
Dim i = 0 
Do Until i >= pathArr.Length OrElse countries.Contains(pathArr(i)) 
    i += 1 
Loop 

If i >= pathArr.Length - 1 Then 
    ... ' Error: No Country found or Country is last component' 
Else 
    myCountry = pathArr(i) 
    i += 1 
    If i < pathArr.Length - 1 Then 
     myCity = pathArr(i) 
     i += 1 
     If i < pathArr.Length - 1 Then 
      myStreet = pathArr(i) 
      i += 1 
      If i < pathArr.Length - 1 Then 
       ... ' Error: Too many components ' 
      End If 
     End If 
    End If 
    FileName = pathArr(i) 
End If 
+0

많은 도움을 주셔서 감사합니다.나는 그것을 조금 비틀었다. 그리고 그것은 매우 잘 움직였다. 다시 한번, 많은 감사합니다. – mazrabul