Powiedzmy, że mam sznurek, który idzie jak

<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>

Zawiera od obrazu1 do wyobrażenia

Muszę sprawdzić każdą ścieżkę obrazu i sprawdzić, czy obraz na tej ścieżce naprawdę istnieje.

Jak przejść przez to?

Myślę, że znalezienie indeksu słowa i ciągnięcie całego tekstu między jest najwolniejszym sposobem.

Czy możesz sugerować coś obok tego?

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
Programer Anel 15 styczeń 2020, 20:24

1 odpowiedź

Najlepsza odpowiedź

W tym konwertowałem twój ciąg do XElement, a następnie iterowany każdy z węzłów Imagen. To powinno działać tak długo, jak twój ciąg wejściowy jest określony.

    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
2
dbasnett 15 styczeń 2020, 18:47