使用 vb.net 从字符串中删除所有 div 元素
Remove all div elements from string using vb.net
我想从我的字符串中删除所有元素,包括具有 class
等属性的元素。
我已经在这里检查过了,所以正则表达式显然不是答案:RegEx match open tags except XHTML self-contained tags
我目前已经有一些正则表达式可以替换字符串中的所有标签(请注意,如果重要的话,我永远不会解析完整的 HTML 文档)并保留内容:Regex.Replace(s, "<[^>]*(>|$)", String.Empty)
。但是,我只想删除 div
标签并保留内容。
所以我有:
<div class=""fade-content""><div><span>some content</span></div></div>
<div>some content</div>
期望的输出:
<span>some content</span>
some content
我一直在使用正则表达式路径,并尝试类似:<div>.*<\/div>
,但不包括具有属性的 div。
如何使用 VB.NET 仅删除 div
个元素?
有几种方法可以做到这一点。一个,简短而简单,是以下一个:
Regex.Replace(s, "</?div.*?>", String.Empty)
这是一个例子:
's simulates your html file
Dim s As String = "<div class="""" fade-content""""><div><span>some content</span></div></div>" + Environment.NewLine + "<div>some content</div>"
'let's store the result in s1
Dim s1 As String = Text.RegularExpressions.Regex.Replace(s, "</?div.*?>", String.Empty)
'output
MessageBox.Show(s1)
输出:
这可以通过使用 WebBrowser 控件在没有正则表达式的情况下实现。请尝试以下操作:
提取所需数据:
Private Function ExtractDesiredData(html As String) As List(Of String)
Dim result As List(Of String) = New List(Of String)()
'create new instance
Using wb As WebBrowser = New WebBrowser()
wb.Navigate(New Uri("about:blank"))
'create reference
Dim doc As HtmlDocument = wb.Document
'add html to document
doc.Write(html)
'loop through body elements
For Each elem As HtmlElement In doc.Body.All
If elem.TagName = "DIV" AndAlso Not elem.InnerHtml.Contains("DIV") Then
Debug.WriteLine($"DIV elem InnerHtml: '{elem.InnerHtml}'")
'add
result.Add(elem.InnerHtml)
End If
Next
End Using
Return result
End Function
用法:
Dim html As String = "<div class=""fade-content""><div><span>some content</span></div></div>"
html &= vbCrLf & "<div>some content</div>"
Dim desiredData As List(Of String) = ExtractDesiredData(html)
资源:
- how to make a webbrowser control go blank in c#?
我想从我的字符串中删除所有元素,包括具有 class
等属性的元素。
我已经在这里检查过了,所以正则表达式显然不是答案:RegEx match open tags except XHTML self-contained tags
我目前已经有一些正则表达式可以替换字符串中的所有标签(请注意,如果重要的话,我永远不会解析完整的 HTML 文档)并保留内容:Regex.Replace(s, "<[^>]*(>|$)", String.Empty)
。但是,我只想删除 div
标签并保留内容。
所以我有:
<div class=""fade-content""><div><span>some content</span></div></div>
<div>some content</div>
期望的输出:
<span>some content</span>
some content
我一直在使用正则表达式路径,并尝试类似:<div>.*<\/div>
,但不包括具有属性的 div。
如何使用 VB.NET 仅删除 div
个元素?
有几种方法可以做到这一点。一个,简短而简单,是以下一个:
Regex.Replace(s, "</?div.*?>", String.Empty)
这是一个例子:
's simulates your html file
Dim s As String = "<div class="""" fade-content""""><div><span>some content</span></div></div>" + Environment.NewLine + "<div>some content</div>"
'let's store the result in s1
Dim s1 As String = Text.RegularExpressions.Regex.Replace(s, "</?div.*?>", String.Empty)
'output
MessageBox.Show(s1)
输出:
这可以通过使用 WebBrowser 控件在没有正则表达式的情况下实现。请尝试以下操作:
提取所需数据:
Private Function ExtractDesiredData(html As String) As List(Of String)
Dim result As List(Of String) = New List(Of String)()
'create new instance
Using wb As WebBrowser = New WebBrowser()
wb.Navigate(New Uri("about:blank"))
'create reference
Dim doc As HtmlDocument = wb.Document
'add html to document
doc.Write(html)
'loop through body elements
For Each elem As HtmlElement In doc.Body.All
If elem.TagName = "DIV" AndAlso Not elem.InnerHtml.Contains("DIV") Then
Debug.WriteLine($"DIV elem InnerHtml: '{elem.InnerHtml}'")
'add
result.Add(elem.InnerHtml)
End If
Next
End Using
Return result
End Function
用法:
Dim html As String = "<div class=""fade-content""><div><span>some content</span></div></div>"
html &= vbCrLf & "<div>some content</div>"
Dim desiredData As List(Of String) = ExtractDesiredData(html)
资源:
- how to make a webbrowser control go blank in c#?