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
答案 0 :(得分:1)
我很好奇两件事。
&
作为替换内容
在查询字符串中表示为键/值之间的分隔符
对? &|&
)
替换它的值有两个以上的键?如果这些事情无关紧要,那么让我更有意义的是替换其他字符串...例如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();
}