从特定点开始向后查找字符串中的字符串
Find String in String backwards, starting from specific point
我有一个文本,在这个文本中我搜索一个文件。我通过搜索其扩展名找到它,但不知道文件名。
当我找到这个字符串时,我有扩展名的索引 (indexof(".jpg"))
现在,我需要完整的文件名。我唯一知道的是文件名在“>”符号之后开始,但文件中有很多这样的符号。例如,有没有一种方法可以获取字符串中“>”的索引,从特定索引开始,然后向后移动?
试试这个正则表达式:
>([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
或者另外我还找到了这个解决方案:
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
我有一个文本,在这个文本中我搜索一个文件。我通过搜索其扩展名找到它,但不知道文件名。 当我找到这个字符串时,我有扩展名的索引 (indexof(".jpg"))
现在,我需要完整的文件名。我唯一知道的是文件名在“>”符号之后开始,但文件中有很多这样的符号。例如,有没有一种方法可以获取字符串中“>”的索引,从特定索引开始,然后向后移动?
试试这个正则表达式:
>([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
或者另外我还找到了这个解决方案:
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