Есть ли простой способ разделения текста в VB.NET? - PullRequest
0 голосов
/ 30 июня 2011

Есть ли простой способ разделения текста в 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];

даст мне "someData1", изменив индекс [1] на [2], очень просто даст мне "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
, а затем получить данные между 1-м и 3-м делениями после этого.

Ответы [ 2 ]

1 голос
/ 30 июня 2011
Dim e = XElement.Parse(str)
Dim a = e.XPathSelectElements("./blah").Elements().ToArray()

a(0).Value 'someData1
a(1).Value 'someData2

РЕДАКТИРОВАТЬ: Для анализа html попробуйте использовать Html Agility Pack

0 голосов
/ 30 июня 2011

У меня получилось, хотя это один из худших кодов, которые я когда-либо писал ...

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()
...