替换一部分字符串。要替换未知大小的字符

时间:2016-10-26 09:23:40

标签: c# regex

所以我不知道很多c#,我有一个javascript背景。

我有一个字符串。

String Url = Adress + "?station_ids=1322&observation_source=3&starttime=[date]"

observation_source=的“值”(数字)是我想要改变的。例如[ObsSource],所以我得到一个这样的字符串:

String Url = Adress + "?station_ids=1322&observation_source=[ObsSource]&starttime=[date]"

我想这样做,所以我可以replace“[ObsSource]”以我自己的价值来扫描不同的“观察源”

observation_source值可以是1到100之间的任何值。我想象的可能是从“observation_source”替换为下一个“?”。但我不知道从哪里开始。

c#中有正则表达式吗?

编辑:为了澄清,"?station_ids=1322&observation_source=[ObsSource]&starttime=[date]"不是我自己制作的。我从其他人制作的JSON对象中获取这些URL。我无法更改字符串从发件人看起来如何,就像我拥有它一样。

2 个答案:

答案 0 :(得分:1)

System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex(@"observation_source=(\d+)");
string url2 = re.Replace(Url, (m) =>
{
  return m.Value.Replace(m.Groups[1].Value, "[ObsSource]");
});

答案 1 :(得分:-1)

试试这个:

        string address = "www.google.com/";
        string url = address + "?station_ids=1322&observation_source=3&starttime=[date]";

        var queryStrings = HttpUtility.ParseQueryString(url);
        queryStrings.Set("observation_source", "[ObsValue]");
        Dictionary<string, string> queryStringsList = new Dictionary<string, string>();

        foreach (var key in queryStrings.AllKeys)
        {
            queryStringsList.Add(key, queryStrings[key]);
        }
        var newAddress = string.Empty;
        foreach (var item in queryStringsList)
        {
            newAddress = newAddress + item.Key + "=" + item.Value + "&";
        }
        Console.Write(newAddress);

我知道它不合适,但你可以根据自己的需要改进代码。