首页 文章

获取两个字符串之间的所有文本

提问于
浏览
0

我试图在两个字符串之间获取所有文本

第一个str: <p style="text-align: justify;">

第二个str: </p>

像这样的文字:

<p style="text-align: justify;">aaaaa</p><p style="text-align: justify;">ddddd</p><p style="text-align: justify;">bbbbb</p>

我想要输出

aaaa
dddd
bbbbb

等等

我试过这个功能,但不知道如何循环它..

Public Function GetClosedText(ByVal source As String, ByVal opener As String, ByVal closer As String) As String
Dim indexOfOpener = source.IndexOf(opener)
Dim result As String = ""
If indexOfOpener >= 0 Then ' default is -1 and indices start with 0
    indexOfOpener += opener.Length ' now look behind the opener
    Dim indexOfCloser = source.IndexOf(closer, indexOfOpener)
    If indexOfCloser >= 0 Then
        result = source.Substring(indexOfOpener, indexOfCloser - indexOfOpener)
    Else
        result = source.Substring(indexOfOpener) ' takes the rest behind the opener
    End If
End If
Return result

结束功能

3 回答

  • 0

    使用正则表达式: <p[^>]*>(?<TEXT>[^<]*)<\/p>

    <p[^>]*> 匹配标签内的文字和标签 <p >

    (?<TEXT>[^<]*) 找到标签之间的字符串并将其命名为group "TEXT"

    <\/p> 匹配转义标记 <\p>

    Regex demo

    Dim input As String = "<p style=""text-align: justify;"">aaaaa</p><p style=""text-align: justify;"">ddddd</p><p style=""text-align: justify;"">bbbbb</p>"
    
    For Each match As Match In Regex.Matches(input, "<p[^>]*>(?<TEXT>[^<]*)<\/p>")
         Console.WriteLine(match.Groups("TEXT"))
    Next
    
  • 0

    您可以使用正则表达式查找 <p> 标记之间的文本 . 您想要的正则表达式模式应检测 >< 之间的 words . 因此,您可以使用此: (\w+)(?=<)(?!>)

    ?= 意味着应该遵循这一点

    ?! 表示应该在此之前

    \w+ 表示两者之间的一个或多个字母 .

    这是一个示例代码,用于将每个匹配的文本打印到 Console

    Dim pattern As String = "(\w+)(?=<)(?!>)"
      Dim input As String = "<p style=""text-align: justify;"">aaaaa</p><p style=""text-align: justify;"">ddddd</p><p style=""text-align: justify;"">bbbbb</p>"
    
      For Each m As Match In Regex.Matches(input, pattern)
         Console.WriteLine("'{0}' found at index {1}.", 
                           m.Value, m.Index)
      Next
    
  • 0

    如果你想了解字符串操作

    Dim xstr As String = "<p style=""text-align: justify;"">aaaaa</p><p style=""text-align: justify;"">ddddd</p><p style=""text-align: justify;"">bbbbb</p>"
            Dim temp As String = ""
            Dim String1 As String = "<p style=""text-align: justify;"">"
            Dim String2 As String = "</p>"
            Dim xlist As New List(Of String)
            Do
                xstr = Mid(xstr, InStr(xstr.ToLower, String1.ToLower) + String1.Length)
                xlist.Add(Mid(xstr, 1, InStr(xstr.ToLower, String2.ToLower) - 1))
                xstr = Mid(xstr, InStr(xstr.ToLower, String2.ToLower) + String2.Length)
            Loop Until InStr(xstr.ToLower, string1.ToLower) = 0
    

相关问题