【问题标题】:ADO - Parse String URL and use parametersADO - 解析字符串 URL 并使用参数
【发布时间】:2013-12-09 15:01:15
【问题描述】:

我正在将 SQL 中的表行读取到 VB.net webform 中,其中值包含 URLs 作为 string

例子:

/TEST/Receiver.ashx?input=3&HLR=&sessionID=138&cellid=&datetime=2013120916545057&isnewrequest=0

我正在使用 SqlDataReader

读取所有值

我想把这个字符串解析成: inputsessionIDcelliddatetimeisnewrequest

然后显示这些参数及其

知道怎么做吗?

我什么都试过了。

【问题讨论】:

  • 这不是一个有效的 URL。这是完整的字符串吗?
  • @StevenDoggart 是的。我只想要参数

标签: vb.net string parsing ado


【解决方案1】:

只需拆分字符串,然后对其进行迭代, 首先,您必须将其拆分为“?”对于查询参数,然后将其拆分为'&',

遍历您拥有的所有对并在“=”处拆分它们并将键、值添加到列表中:)

Dim myString As String = "/TEST/Receiver.ashx?input=3&HLR=&sessionID=138&cellid=&datetime=2013120916545057&isnewrequest=0"
Dim pairs As New List(Of KeyValuePair(Of String, String))()
Dim keyValuePairs() As String = myString.Split("?"c)(1).Split("&"c)
For Each pair As String In keyValuePairs
    Dim kp() As String = pair.Split("="c)
    pairs.Add(New KeyValuePair(Of String, String)(kp(0), kp(1)))
Next pair

【讨论】:

  • 您是否忘记了您在 VB.NET(黑暗)方面?
  • 这是一个很好的例子,说明如何在不使用内置 URI 解析的情况下自行解析。 +1 是一个很好的例子,并花时间将其转换为 VB :)
  • 感谢您清理它 :)
【解决方案2】:

如果您有一个有效的 URL,您可以使用 HttpUtility 类的内置功能对其进行解析,如下所示:

Dim myUri As New Uri(urlString)
Dim input As String = HttpUtility.ParseQueryString(myUri.Query).Get("input")

但是,您发布的示例不是有效的 URL,因此会引发异常。要修复它,您需要为字符串添加一个有效前缀,如下所示:

Dim partialUrlFromDb As String = "/TEST/Receiver.ashx?input=3&HLR=&sessionID=138&cellid=&datetime=2013120916545057&isnewrequest=0"
Dim baseUri As New Uri("http://myfakesite")
Dim myUri As New Uri(baseUri, partialUrlFromDb)
Dim input As String = HttpUtility.ParseQueryString(myUri.Query).Get("input")

【讨论】:

    【解决方案3】:

    这可能不是最好的方法,但 q1,q2,q3,q4 会为您提供 input 、 sessionID 、 cellid 、 datetime 、 isnewrequest

     s = "/TEST/Receiver.ashx?input=3&HLR=&sessionID=138&cellid=&datetime=2013120916545057&isnewrequest=0 " ''''''''''''''''''''''''''''
    
        s1 = InStr(s, "=")
    
        s2 = InStr(s, "=&")
    
        q1 = Mid(s, s1 + 1, (s2 - s1) - 1) 'Input
    
        f1 = Mid(s, s2 + 1) ''''''''''''''''''''''''
    
        s1 = InStr(f1, "=")
    
        s2 = InStr(f1, "=&")
    
        q2 = Mid(f1, s1 + 1, (s2 - s1) - 1) 'Session Id
    
        f2 = Mid(f1, s2 + 2) '''''''''''''''''''''''''''''''
    
        s1 = InStr(f2, "=")
    
        s2 = InStr(f2, "&")
    
        q3 = Mid(f2, s1 + 1, (s2 - s1) - 1) 'Dattime
    
        f3 = Mid(f2, s2 + 1)
    
        s1 = InStr(f3, "=") '''''''''''''''''''''''''''''''
    
        q4 = Mid(s, s1 + 1) 'isnewrequest
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 2014-05-02
      相关资源
      最近更新 更多