Диапазон строк в VB.NET с несколькими вхождениями

Я пытаюсь сделать что-то довольно простое в VB, что я делаю каждый день в JavaScript.

Мне нужно проанализировать текст между двумя строками (в основном HTML-теги), которые имеют несколько вхождений.

Образец данных:

<tag>test</tag>
<tag>test2</tag>
<tag>test3</tag>

Если бы я хотел получить данные во втором ‹tag> в JavaScript, я бы просто сделал это:

var result = string.split('<tag>')[2].split('</tag>')[0];

И единственный способ заставить это работать в VB выглядит так...

Dim from = string.IndexOf("<tag>")
Dim [to] = string.IndexOf("</tag>", from)
Dim result = string.Substring(from + "<tag>".Length, [to] - from - "<tag>".Length)

Имейте в виду, что это только первое вхождение в VB, и код уже выглядит нелепо по сравнению с ним... Я даже не хотел выяснять второе вхождение, пока не узнаю, что это мое единственное решение. Спасибо


person bfritz    schedule 04.05.2012    source источник


Ответы (1)


Вы можете сделать то же самое в VB, используя метод «Разделить» для строки.

    Dim sx As String = "<tag>test</tag> <tag>test2</tag> <tag>test3</tag> "
    Dim sp As String = sx.Split(New [String]() {"<tag>"}, StringSplitOptions.RemoveEmptyEntries)(1).Split(New [String]() {"</tag>"}, StringSplitOptions.RemoveEmptyEntries)(0)
person tzerb    schedule 04.05.2012
comment
После вашего ответа я углубился в него... И оказалось, что вы правы :) Я использовал неправильную функцию разделения, пытаясь использовать indexOf/Substring. Решение: Regex.Split(string, ‹tag›)(1).Split(‹/tag›)(0) - person bfritz; 05.05.2012
comment
проверьте мою новую проблему с разделением здесь: stackoverflow.com/questions/10458032/ - person bfritz; 05.05.2012