0

次のような URL を取得しています。

some_site.com/full/path/page.aspx? label[0] =a_value& label[1] =b_value& label[2] =c_value

インデックス番号が生成されるため、毎回これらの「label[x]」値の動的な番号が存在します。

これらすべてを ASP/C#.NET 4.0 で 'Label' という名前の String[] に解析する最も簡単な方法は何でしょうか?

4

4 に答える 4

1

NameValueCollection文字列の配列の代わりに使用する必要があります。

NameValueCollection queryParameters = new NameValueCollection();
string[] querySegments = queryString.Split('&');
foreach(string segment in querySegments)
{
   string[] parts = segment.Split('=');
   if (parts.Length > 0)
   {
      string key = parts[0].Trim(new char[] { '?', ' ' });
      string val = parts[1].Trim();

      queryParameters.Add(key, val);
   }
}

角括弧内のラベルの番号を取得するには、 を使用しますRegular Expressions

regxObj = new Regex(@"\[(.*?)\]");
于 2013-02-01T22:19:25.193 に答える
0

「?」のインデックスから部分文字列を取得することから始めることができます。'&' で分割します。

次に、そのリストをループして「=」で分割し、2 番目の要素、または「=」のインデックスの後に始まるそれぞれの部分文字列を取得できます。

なんらかの理由で文字列の配列としてのみ必要な場合は、この1行でおそらく機能します。

String[] labels = (from substring in s.Substring(s.IndexOf('?') + 1).Split('&') select substring.Substring(substring.IndexOf('=') + 1)).ToArray();

編集:これは、実際のラベルとその番号を無視することに注意してください。名前付きの番号付きタグ以外のものがあればlabel[n]、それらも配列に追加されます。

于 2013-02-01T22:29:21.933 に答える
0

Request.Querystring コレクションのエントリを列挙することを考えたことがありますか?

于 2013-02-01T22:18:28.267 に答える
-1

長さというパラメータを作る

 some_site.com/full/path/page.aspx?length=4&label[0]=a_value&label[1]=b_value&label[2]=c_value...

それから、すでに長さを知っている反対側で簡単に解析できます

長さがわかっている場合は、ループを何回繰り返してクエリ文字列の値を読み取るかがわかります

-また-

可変量のパラメーターを持たず、1つを使用し、特殊文字を使用してそれらを区切り、反対側の区切り文字で値を分割します

于 2013-02-01T22:15:07.173 に答える