通过for循环查找并替换动态值

时间:2012-09-24 19:05:42

标签: c# asp.net .net winforms

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

我正在尝试更换&使用表中的值。我把名字和年龄作为两个参数,我需要替换并得到这样的网址:

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

如果我要为网址替换3个字符串参数:

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

上述网址的名称,年龄,地址:

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

3 个答案:

答案 0 :(得分:1)

我很好奇两件事。

  • 当你具有上下文时,为什么要使用&作为替换内容 在查询字符串中表示为键/值之间的分隔符 对?
  • 为什么有时您的字符串只有2个字段(&|&) 替换它的值有两个以上的键?

如果这些事情无关紧要,那么让我更有意义的是替换其他字符串...例如http://www.test.com/test.aspx?testinfo=[testinfo]。当然,除了你期望的地方之外,你需要选择一些不太可能出现在你的Url中的东西。然后,您可以使用以下内容替换它:

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

请注意,这不需要您的for循环,并且应该会产生您期望的网址。 请参阅msdn。上的string.Join

  

使用指定的连接字符串数组的所有元素   每个元素之间的分隔符。

答案 1 :(得分: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);
    }

答案 2 :(得分: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();
}