-5

http://www.test.com/test.aspx?testinfo=&|&

&をテーブルの値に置き換えようとしています。私は2つのパラメーターとして名前と年齢を取得しました。これらを置き換えて、次のようなURLを取得する必要があります。

http://www.test.com/test.aspx?testinfo=name|age

URLを置き換える3つの文字列パラメータがある場合:

http://www.test.com/test.aspx?testinfo=&|&

上記のURLのViz名、年齢、住所:

http://www.test.com/test.aspx?testinfo=name|age|address

string URL=string.Empty;
URL=http://www.test.com/test.aspx?testinfo=&|&;
//in this case fieldsCount is 2, ie. name and age
for(int i=0; i<fieldsCount.Length-1;i++)
{
      URL.Replace("*","name");
}

「年齢」を追加して取得するにはどうすればよいですか?任意の入力が役立ちます。

http://www.test.com/test.aspx?testinfo=name|age

4

3 に答える 3

1

私は2つのことに興味があります。

  • &キーと値のペア間の区切り文字としてクエリ文字列内でコンテキスト上の意味があるのに、なぜ置換するものとして使用しているのですか?
  • &|&文字列を置き換える値に3つ以上のキーがあるのに、文字列に2つのフィールド()しかないのはなぜですか?

これらのことが問題にならない場合は、他の何かの置換文字列を用意する方が理にかなっています...たとえばhttp://www.test.com/test.aspx?testinfo=[testinfo]。もちろん、予想した場所とは別に、URLに表示される可能性が0の何かを選択する必要があります。その後、次のようなものに置き換えることができます。

url = url.Replace("[testinfo]", string.Join("|", fieldsCount));

これはforループを必要とせず、期待されるURLになるはずであることに注意してください。string.Joinonmsdnを参照してください。

各要素間に指定された区切り文字を使用して、文字列配列のすべての要素を連結します。

于 2012-09-24T19:18:51.387 に答える
1

これがあなたの望むものだと思います、

    List<string> keys = new List<string>() { "name", "age", "param3" };
    string url = "http://www.test.com/test.aspx?testinfo=&|&;";
    Regex reg = new Regex("&");
    int count = url.Count(p => p == '&');

    for (int i = 0; i < count; i++)
    {
        if (i >= keys.Count)
            break;
        url = reg.Replace(url, keys[i], 1);
    }
于 2012-09-24T19:24:02.840 に答える
0

私が正しく理解していれば、次のようなものが必要だと思います。

private static string SubstituteAmpersands(string url, string[] substitutes)
{
    StringBuilder result = new StringBuilder();
    int substitutesIndex = 0;

    foreach (char c in url)
    {
        if (c == '&' && substitutesIndex < substitutes.Length)
            result.Append(substitutes[substitutesIndex++]);
        else
            result.Append(c);
    }

    return result.ToString();
}
于 2012-09-24T19:37:16.293 に答える