2016-02-15 3 views
0

Так что я получаю значения из базы данных и на основе того, что мы кодируем XML-файл. Но данные, которые мы получаем из базы данных, это «12454 тестирование». Но мне бы хотелось только цифры и закодировать их.Получение подстроки из возвращаемого значения sqlreader

Dim oDoc As New FormDB 
    Dim dr As SqlDataReader = oDoc.GetSingleDocument(SB_ID) 

    While dr.Read 
     Dim outdoc As String = "<ns0:TEST xmlns:ns0='http://Prototype.Test'>" & _ 

    "<CostCode>" & Encode(dr.Item("COSTCODE")) & "</CostCode>" & _ 
"</ns0:TEST >" 

Так как я только кодировать номер «21334» в тегах costCode, не хотите кодировать «144343 тестирование».

Благодаря

+0

Regex:. ** \ d + **, это один из способов ... Покажите нам, что у вас есть ** попробовал **, и, возможно, вы получите другое предложение или решение, возможно ... – Codexer

+0

Не знаете, почему мой ответ был опущен, но я думаю, это может быть мое понимание того, что задают. Или, возможно, это понимание того, как это можно сделать с помощью значения dr.Item(). Я сделал предположение, что Encode был методом удаления текста из считываемого значения. Ответ был примером того, как разбить строку inline. Я думаю, проблема заключается в том, что dr.Item («CostCode») является объектом, а параметр Strict - выключенным, позволяющим выполнять код. См. Мой обновленный ответ для более кратким примером или объясните, почему он не работает. –

ответ

0

Вы можете использовать String.split() встроенный. Например, если у вас что-то вроде:

Dim myStr = "123456 SomeText" 

вы могли бы использовать его в другой строке, чтобы получить только номера с чем-то вроде

Dim newStr = "<ProductID>" & myStr.Split(" "c)(0) & "</ProductID>" 

Давать вам результат <ProductID>123456</ProductID> где с помощью 1 на месте 0 даст вам <ProductID>SomeText</ProductID>

EDIT:
с Option Strict Off компилятор не предупреждает вас об использовании dr.Item("COSTCODE") быть объектом, а не как Tring. Мы можем преодолеть это, используя метод .ToString, чтобы предоставить нам доступ к методу расширения Split.

Dim oDoc As New FormDB 
Dim dr As SqlDataReader = oDoc.GetSingleDocument(SB_ID) 

While dr.Read 
    Dim outdoc As String = "<ns0:TEST xmlns:ns0='http://Prototype.Test'>" & _ 
"<CostCode>" & dr.Item("COSTCODE").ToString.Split(" "c)(0) & "</CostCode>" & _ 
"</ns0:TEST >" 

Опять же, этот код ожидает читатель (д-р) для приведения в строку текста, как «12454 тестирования» и только принимает 12454 и инъекционного его в outdoc строку. Выходной сигнал, когда читатель читает «12454 тестирование» будет:

<ns0:TEST xmlns:ns0='http://Prototype.Test'><CostCode>12454</CostCode></ns0:TEST > 

Что было мое понимание того, что было необходимо из того, что читается в

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