2

我有以下字符串

sa=t&rct=j&q=&esrc=s&source=productsearch&cd=1&cad=rja&docid=10829621560421678006&ved=0CDEQ9gIwAA&url=http%3A%2F%2Fwww

我想把这部分解析出来10829621560421678006

我正在考虑编写一个函数,该函数返回两个指定字符串之间的字符串,在这种情况下 &docid=&ved=

有什么建议或更好的解决方案吗?请注意,我不能使用拆分,因为字符串结构会不时不同,我对这个数字的引用是这两个字符串&docid=&ved=

也可以使用正则表达式吗?

4

4 回答 4

3

您可以为此使用Strings.Split 方法

Dim extracted As String = Split(Split(sourcestring, "&docid=")(1), "&ved=")(0)
于 2012-11-04T22:07:38.650 回答
1

您可以像这样使用 LINQ:

var docid = 
    text
        .Split('&')
        .Select(x => x.Split('='))
        .Where(x => x[0] == "docid")
        .Select(x => x[1])
        .First();
于 2012-11-04T07:16:21.880 回答
1

你可以尝试这样的事情: -

 Dim startIndex As Integer = temp.IndexOf("&docid=") + 20
 Dim endIndex As Integer = temp.IndexOf("&ved=", startIndex)
 Dim extraction As String = temp.Substring(startIndex, endIndex - startIndex).Trim

如果你想使用正则表达式,那么你可以简单地试试这个: -

 docid=(.*?)&ved
于 2012-11-04T06:57:00.000 回答
1

这个正则表达式非常简单有效。

docid=(.*?)&ved

结果:

$matches Array:
(
    [0] => Array
        (
            [0] => docid=10829621560421678006&ved
        )

    [1] => Array
        (
            [0] => 10829621560421678006
        )

)
于 2012-11-04T06:52:30.033 回答