2012-11-04 26 views
2

之间的字符串我有以下字符串得到2串

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

我想解析这部分出10829621560421678006

我的想法写,返回2个指定字符串之间的字符串函数在这种情况下&docid=&ved=

任何建议或更好的解决方案?,请注意,我不能使用拆分,因为字符串结构会不时不同,我参考这个数字r为2个的那些字符串&docid=&ved=

也有可能使用regualr表达?

回答

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 
1

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

docid=(.*?)&ved 

结果:

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

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

) 
1

你可以像这样使用LINQ:

var docid = 
    text 
     .Split('&') 
     .Select(x => x.Split('=')) 
     .Where(x => x[0] == "docid") 
     .Select(x => x[1]) 
     .First(); 
3

您可以使用Strings.Split Method此:

Dim extracted As String = Split(Split(sourcestring, "&docid=")(1), "&ved=")(0) 
+0

谢谢你的回答,你的答案是最适合我的情况;-D –