从sqlreader获取子字符串返回值

时间:2016-02-15 00:01:27

标签: vb.net

所以我从数据库中获取值,并根据我们编码XML文件。但是我们从数据库中获取的数据是“12454测试”。但我只想要数字和编码。

   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 >"

那么我如何只编码costCode标签中的数字“21334”,不想编码“144343测试”。

由于

1 个答案:

答案 0 :(得分:0)

您可以使用String.Split()内联。例如,如果你有类似的东西:

Dim myStr = "123456 SomeText"

你可以在另一个字符串中使用它来获取类似

之类的数字
Dim newStr = "<ProductID>" & myStr.Split(" "c)(0) & "</ProductID>"

为您提供结果<ProductID>123456</ProductID>,其中使用1代替0会给您<ProductID>SomeText</ProductID>

编辑:
使用Option Strict Off,编译器不会警告您使用dr.Item("COSTCODE")作为对象而不是字符串。我们可以通过使用.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 >"

同样,这段代码期望读者(dr)引入一串文本,例如“12454 testing”,并且只接受12454并将其注入你的outdoc字符串。读者读入“12454测试”时的输出将是:

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

这是我对正在阅读的内容的理解。