Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 替换字符串的一部分。要替换大小未知的字符_C#_Regex - Fatal编程技术网

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

C# 替换字符串的一部分。要替换大小未知的字符,c#,regex,C#,Regex,所以我对c不太了解,我有javascript背景 我有一根绳子 String Url = Adress + "?station_ids=1322&observation_source=3&starttime=[date]" 而observation\u source=的“值”(数字)就是我想要改变的。例如到[ObsSource],我得到如下字符串: String Url = Adress + "?station_ids=1322&observation_source=[

所以我对c不太了解,我有javascript背景

我有一根绳子

String Url = Adress + "?station_ids=1322&observation_source=3&starttime=[date]"
observation\u source=
的“值”(数字)就是我想要改变的。例如到
[ObsSource]
,我得到如下字符串:

String Url = Adress + "?station_ids=1322&observation_source=[ObsSource]&starttime=[date]"
我想这样做,以便以后可以用我自己的值替换“[ObsSource]”,以扫描不同的“观测源”

观测源值可以是1到100之间的任何值。我想可能的是将“观察源”替换为下一个“?”但我不知道从何开始

c#中有正则表达式吗

编辑:澄清一下,
“?站点ID=1322和观测源=[ObsSource]&开始时间=[date]”
不是我自己做的。我从其他人创建的JSON对象获取这些URL。我无法更改发件人发送的字符串的外观,只能更改收到字符串后的处理方式。

尝试以下操作:

        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);
string address=“www.google.com/”;
字符串url=address+“?站点ID=1322,观测源=3,起始时间=[date]”;
var querystring=HttpUtility.ParseQueryString(url);
Set(“观测源”、“[ObsValue]”;
Dictionary queryStringsList=新建字典();
foreach(queryStrings.AllKeys中的var键)
{
添加(key,queryStrings[key]);
}
var newAddress=string.Empty;
foreach(queryStringsList中的变量项)
{
newAddress=newAddress+item.Key+“=”+item.Value+“&”;
}
Console.Write(新地址);

我知道这不合适,但您可以根据需要修改代码

看来这本书对你有用。是的,C#确实有正则表达式。有关如何解析和修改查询字符串,请参阅。另外,请阅读并分享您的研究。这似乎是不必要的步骤,但我有180个字符串,我的目标只是找出如何替换字符串中特定数量的未知字符。目前正在阅读复制线程,谢谢是的,C#中有regexp。请在谷歌上搜索“c#regex”。这是一个字符串格式,OP要求替换。另外,“试试这个”不是答案,请解释您的解决方案。@CodeCaster OP询问占位符。@Andrew不,这是他们想要的解决方案。问题以“我得到一个字符串”开始,其中
&observation\u source=3
,他们不知道它总是3,他们会想替换该值。他们不是从头开始构建查询字符串,而是接收输入。另请参见刚才对该问题所做的编辑。我看到您在编辑中写了“observation_source=[ObsSource]”。我的问题是如何将“观测源”的值变成“[ObsSource],这样我以后就可以在上面做“.replace()”之类的事情,就像我正在做的事情一样,上面写着[date]嘿,似乎工作得很好!Does”(\d+)“你是说附近有多少人?如中所示,如果由于某种原因,数字为1000001,它是否会中断?@NachoDawg在.NET中,
\d
在正则表达式中表示a。您可以使用
[0-9]
将其限制为字符“0”到“9”,或者使用使其表现为ECMAScript正则表达式。
+
表示“一个或多个连续事件”。
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]");
});