Разбор текста vb. net в строки - PullRequest
0 голосов
/ 15 января 2020

Допустим, у меня есть строка, которая выглядит как

<image1>C:\images\dropbox\lister\4844-001.jpg</image1><image2>C:\images\dropbox\lister\4844-002.jpg</image2><image3>C:\images\dropbox\lister\4844-003.jpg</image3><image4>C:\images\dropbox\lister\4844-004.jpg</image4>

Она содержит от Image1 до ImageN

Мне нужно проверить каждый путь к изображению и проверить, действительно ли изображение на этом пути существует.

Как пройти через это oop?

Я думаю, что найти индекс слова и натянуть весь текст - самый медленный путь.

Можете ли вы предложить что-нибудь кроме этого?

Private Function Word(source As String, start As String, ends As String) As String
        Dim sSource As String = source
        Dim sDelimStart As String = start
        Dim sDelimEnd As String = ends
        Dim nIndexStart As Integer = sSource.IndexOf(sDelimStart)
        Dim nIndexEnd As Integer = sSource.IndexOf(sDelimEnd)

        If nIndexStart > -1 AndAlso nIndexEnd > -1 Then
            Dim res As String = Strings.Mid(sSource, nIndexStart + sDelimStart.Length + 1, nIndexEnd - nIndexStart - sDelimStart.Length) 'Crop the text between
            Return res
        Else
            Return ""
        End If
    End Function

1 Ответ

2 голосов
/ 15 января 2020

В этом я преобразовал вашу строку в XElement, затем итерировал каждый из узлов imageN. Это должно работать, пока ваша входная строка соответствует указанной вами.

    Dim s As String
    s = "<image1>C:\images\dropbox\lister\4844-001.jpg</image1><image2>C:\images\dropbox\lister\4844-002.jpg</image2><image3>C:\images\dropbox\lister\4844-003.jpg</image3><image4>C:\images\dropbox\lister\4844-004.jpg</image4>"
    s = "<FOO>" & s
    s = s & "</FOO>"
    Dim fooXE As XElement = XElement.Parse(s)
    For Each el As XElement In fooXE.Elements
        ' Debug.WriteLine(el.Value)
        If IO.File.Exists(el.Value) Then
            'the path exists
        End If
    Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...