用另一个值替换部分查询字符串

时间:2014-03-13 13:40:30

标签: c#

我有这个网址http://spdata.com?value=1&rem=288&data=1 ..我想用其他值替换rem = 288(这288不是静态的),例如membership = 1。可以告诉我如何做到这一点。 正在考虑做一个子串然后合并但不确定是否有一个已经很容易的过程来执行此操作。

由于

5 个答案:

答案 0 :(得分:2)

你可以用正则表达式来做。

这样的事情:

using System.Text.RegularExpressions;
string newUrl= Regex.Replace("http://spdata.com?value=1&rem=288&data=1", @"rem=\d*", "membership=1",RegexOptions.IgnoreCase);

答案 1 :(得分:1)

这应该适合您。根据您的网址格式,这会将所有"rem=x"更改为另一个值。在这种情况下,它是"membership=1",当然您也可以将其设置为动态。

var url = "http://spdata.com?value=1&rem=288&data=1";

var parts = url.Split('&').Select(x =>
        {
            if (x.Contains("rem=")) return "membership=1";
            return x;
        });

var result = string.Join("&", parts);

答案 2 :(得分:1)

尝试使用此

   string text = "membership=1";
   string x = "http://spdata.com?value=1&rem=288&data=1 ";
   int y = x.IndexOf("rem=");

   string z = x.Substring(y, x.Length - y);

   int a = z.IndexOf("&");

   string url = x.Substring(0, y) + text + z.Substring(a, z.Length - a);

答案 3 :(得分:0)

如果您想要简单,快速和可读,那么为什么不将这些字符串连接在一起呢?或者使用string.Format

string key="rem";
string value="288";
string.Format("http://spdata.com?value=1&{0}={1}&data=1", key, value)

答案 4 :(得分:0)

Uri uri = new Uri("http://spdata.com?value=1&rem=288&data=1...")
var pairs = HttpUtility.ParseQueryString(uri.Query)
pairs.Remove("rem");
pairs.Add("membership", "1");

var builder = new UriBuilder(uri);
builder.Query = pairs.ToString();

Uri modified = builder.Uri;