VB.NET сложность манипуляции с одномерным массивом строк - PullRequest
0 голосов
/ 15 мая 2010

У меня возникли проблемы с манипулированием одномерным массивом строк в VB.NET, и я прошу вашей помощи, пожалуйста.

Моя цель - получить 4 переменные (если возможно) из пути к файлу. Эти переменные: myCountry, myCity, myStreet, Filename. Все объявлено как строка. Расположение файла также объявляется как строка. Итак, у меня есть:

Dim filePath As String

, чтобы проиллюстрировать мою проблему и то, что я пытаюсь сделать, у меня есть следующие примеры:

1

C: \ my \ location \ is \ UK \ Birmingham \ Summer Road \ this house.txt.

В этом примере myCountry будет = UK. myCity = Бирмингем. myStreet = Летняя дорога. Имя файла = this house.txt

2-

C: \ my Location \ is \ France \ Lyon \ that house.txt.

здесь myCountry = Франция. MyCity = Лион. Там нет улицы. Имя файла = этот дом.txt

3-

C: \ мое местоположение \ Германия \ другой house.txt

Здесь myCountry = Германия. Нет города. Нет улицы Имя файла = другой дом.txt

То, что я пытаюсь сказать, я заранее не знаю о длине строки или о положении переменных, которые я хочу. Я также не знаю, собираюсь ли я найти / получить название города или улицы в пути. Однако я точно знаю, что получу myCountry, и это будет один из 5 вариантов: Великобритания, Франция, Германия, Испания, Италия.

Для решения моей проблемы первое, что я сделал, было:

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

Чтобы получить FileName, я сделал:

FileName = pathArr.Last

Чтобы получить мою страну, я сделал:

    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. Я думал, что смогу уйти оттуда, но я застрял и не знаю, что делать дальше. Любая помощь будет оценена.

1 Ответ

2 голосов
/ 15 мая 2010

Использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...