从特定点开始向后查找字符串中的字符串

时间:2018-01-22 14:50:21

标签: vb.net indexof

我有一个文本,在本文中我搜索了一个文件。我通过搜索它的扩展名找到它,但不知道文件的名称。 当我找到这个字符串时,我有扩展名的索引(indexof(“。jpg”))

现在,我需要完整的文件名。我唯一知道的是文件名在“>”后面开始符号,但文件中有很多这些。有没有办法获得“>”的索引在字符串中,从特定索引开始,然后向后退?

2 个答案:

答案 0 :(得分:4)

试试这个正则表达式:

>([A-Za-z0-9-+. _]+[.]jpg)

或者更好:

>([^[\]\*\/\\<>|]+[.]jpg)

我可能错过了一个允许的角色,但是它涵盖了大部分内容并且应该很容易修改。使用如下表达式:

Public Iterator Function FindJPGFileNames(inpupText As String) As IEnumerable(Of String)
     For Each match In RegEx.Matches(inputString, ">([^[\]\*\/\\<>|]+[.]jpg)")
         Yield match.Groups(1).Value
     Next match
End Function

Public Function FindJPGFileNames(inpupText As String) As IEnumerable(Of String)
    Dim matches = RegEx.Matches(inputString, ">([^[\]\*\/\\<>|]+[.]jpg)")
    Return matches.Select(Function(m) m.Groups(1).Value)
End Function

答案 1 :(得分:0)

或者另外我也找到了这个解决方案:

Private Function searchimages(ByVal s As String, ByVal ending As String) As List(Of String)
    Dim los As New List(Of String)

    Dim position As Integer = 0
    While position <> -1
        position = s.IndexOf(ending, position, StringComparison.CurrentCultureIgnoreCase)
        If position <> -1 Then

            Dim endPosition As Integer = position + ending.Length
            Dim startposition As Integer = s.LastIndexOf(">", position - 1, StringComparison.CurrentCultureIgnoreCase) + 1

            los.Add(s.Substring(startposition, endPosition - startposition))

            position = endPosition
        End If
    End While
    Return (los)
End Function