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=

何か提案やより良い解決策はありますか?文字列の構造は時々異なるため、分割を使用できないことに注意してください。この番号への私の参照は、これらの2つの文字列&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

あなたはこのようなことを試すことができます:-

 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 に答える
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 に答える