2015-11-05 6 views
0

Рассмотрим следующий набор результатов из поиска, выполненного на некотором xml, возвращаемом службой.Каков наиболее эффективный способ извлечения определенного раздела текста из строки

enter image description here

Мне нужно извлечь значение из атрибута internalref от этого (это в конце прошлого, но одна строка в представлении MessageBox показано). Во-первых, к тому времени, когда я получу это, это уже не действительный xml, а строка. Во-вторых, он может не содержать значения innerref (этот бит по крайней мере легко я могу проверить, если resultset.contains ("internalref")).

Так что, предположим, что я мог бы сделать индексный поиск, который обеспечил бы индекс, по которому начинался внутренний рефикс, и по определению я мог бы добавить 13 к этому, чтобы довести меня до начала интересующего меня бита.

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

Я не могу не думать, что есть, вероятно, более простой способ сделать это, хотя и я слишком усложняю вещи. Первоначальная проверка существования internalref является заданной, но если есть более простой способ извлечь бит строки между следующими кавычками, которые я хотел бы знать, как это сделать. Число, которое мне нужно (и да, его нужно будет преобразовать, но это не проблема, длина может быть от 1 до 15 символов.

+0

Почему это более недействительный XML? Это сделало бы вашу жизнь намного легче, если бы это было так. В противном случае нет ничего, кроме как разобрать его вручную. –

ответ

1

Я бы предпочел сделать это время разбора с помощью XML, SelectNode и XPath, но вот быстрый и грязный, который должен работать предполагая, что вы уже определили, что internalref = существует и не имеет места, то попробуйте:.

Dim i As Integer = CInt(Val(Split(s, "internalref=""")(1))) 

Я предполагаю, что число является целым числом, но если его двойной, то удалите вызов CInt.

Dim i As double = Val(Split(s, "internalref=""")(1)) 
+0

Это очень аккуратный один лайнер, спасибо. –

+0

@DomSinclair Спасибо. Я должен был упомянуть, что я предполагаю, что строка находится в переменной с именем * s *, которую вы выяснили, но я упоминаю ее в интересах любого, кто читает этот пост. – JerryM

Смежные вопросы