【问题标题】:Is there any easy method for splitting text in VB.NET?在 VB.NET 中分割文本有什么简单的方法吗?
【发布时间】:2011-09-25 18:13:25
【问题描述】:

在 VB.NET 中分割文本有什么简单的方法吗? (使用开始和结束字符串来抓取中间的内容?)

我一直在 JScript 中这样做:

<junk>
<blah>
<data>someData1</data>
<data>someData2</data>
<data>someData3</data>
</blah>
</junk>
var data = string.split('<data>')[1].split('</data>')[0];

通过将 [1] 索引更改为 [2] 会给我“someData1”会给我“someData2”很容易

由于某种原因,这在 VB.NET 中似乎很难实现。

这是我正在处理的实际 HTML 的一部分:

<...malformed html>
<div style='font-size:10pt;font-family:Times;color:#000000;position:absolute;top:2731.068;left:48'>Total</div>
<div style='font-size:10pt;font-family:Times;color:#000000;position:absolute;top:2731.068;left:346.2141'>18,072.59</div>
<div style='font-size:10pt;font-family:Times;color:#000000;position:absolute;top:2731.068;left:444.3433'>100.00%</div>
<div style='font-size:10pt;font-family:Times;color:#000000;position:absolute;top:2731.068;left:567.1293'>21,687.11</div>
<div style='font-size:10pt;font-family:Times;color:#000000;position:absolute;top:2731.068;left:666.3433'>100.00%</div>
<malformed html...>

我需要找到

Total
索引,然后抓取第一个和第三个 div 之间的数据。

【问题讨论】:

  • 你说的是字符串吗?
  • 看起来您正在拆分 XML。如果是这样,为什么不使用 XML 库来处理手动字符串解析无法处理的数百种边缘情况。
  • 它实际上是一个字符串,其中包含我正在处理的一堆 HTML。

标签: vb.net string split slice


【解决方案1】:

我得到了它的工作,虽然这是我写过的一些更糟糕的代码......

Dim sr As StreamReader

sr = New StreamReader("C:\test.html")

Dim xactHTML As String = sr.ReadToEnd

Dim left As Integer = xactHTML.IndexOf("Total</div>")
Dim chunk1 As String = xactHTML.Substring(left + 12)

Dim right As Integer = chunk1.IndexOf("<div style='position")
Dim chunk2 As String = chunk1.Substring(0, right - 1)

Dim xHTML As String = "<xml>" & chunk2 & "</xml>"

Dim e = XElement.Parse(xHTML)
Dim a = e.Elements().ToArray()

Dim damageAmmount As String = a(2).Value()

【讨论】:

    【解决方案2】:
    Dim e = XElement.Parse(str)
    Dim a = e.XPathSelectElements("./blah").Elements().ToArray()
    
    a(0).Value 'someData1
    a(1).Value 'someData2
    

    编辑: 要解析 html,请尝试使用 Html Agility Pack

    【讨论】:

    • 如果它是 XML 数据,那就太好了。我尝试了上述方法,我的输出 HTML 来自一个名为 Xactimate 的软件,它不会生成 XHTLM 友好代码,所以我收到很多错误,例如“System.Xml.XmlException: '0' is an unexpected token . 预期的标记是 '"' 或 '''。"
    • 对于您指定的“块”,您只需在 div 周围添加一个节点即可使用上述代码
    • 我现在正在切换到这种方法,试图提取好 html 的“块”,这样我就可以使用 XPath...
    猜你喜欢
    • 2014-09-10
    • 1970-01-01
    • 2011-09-13
    • 2021-04-19
    • 2011-07-20
    • 1970-01-01
    • 2019-10-19
    • 2020-12-29
    • 1970-01-01
    相关资源
    最近更新 更多