C# 拆卸支架

C# 拆卸支架,c#,regex,string,C#,Regex,String,考虑: string value = "http://url.com/index?foo=[01234]&bar=1"; 我需要删除括号中的[] 我试过了 value = value.Replace("[01234]", "1234"); 但这不起作用 我应该研究正则表达式吗 编辑 我不能只做[或],因为字符串可以包含多个[或]。我只想把foo=[blah]替换为foo=blah**。你可以这样做- value = value.Replace("[", "").Replace("]"

考虑:

string value = "http://url.com/index?foo=[01234]&bar=1";
我需要删除括号中的
[
]

我试过了

value = value.Replace("[01234]", "1234");
但这不起作用

我应该研究正则表达式吗

编辑

我不能只做
[
]
,因为字符串可以包含多个
[
]
。我只想把
foo=[blah]
替换为
foo=blah
**。

你可以这样做-

value = value.Replace("[", "").Replace("]", "");
编辑

或使用正则表达式(未测试)-


你可能不需要正则表达式。简单的字符串替换即可:

using System;
using System.Web;

class Program
{
    static void Main()
    {
        string value = "http://url.com/index?foo=[01234]&bar=1";
        var uriBuilder = new UriBuilder(value);
        var query = HttpUtility.ParseQueryString(uriBuilder.Query);
        query["foo"] = query["foo"].Replace("[", "").Replace("]", "");
        uriBuilder.Query = query.ToString();
        value = uriBuilder.ToString();

        Console.WriteLine(value);
    }
}
这将确保只删除
foo
参数的括号。

我将使用正则表达式:

var value = "http://url.com/index?foo=[01234]&bar=1"; 
value = Regex.Replace(value, "foo=\\[(.*?)\\]","foo=$1");

什么不起作用?您的代码与您提供的示例配合得很好。您所描述的示例应该有效,请查看代码中的其他部分,或者向我们展示更多内容。如果此url的其他部分中存在不需要替换的括号,该怎么办?我不能只做[或],因为字符串可以包含多个括号。[或]。我只想用foo=blah替换foo=[blah],如果这个url的其他部分中有括号不需要替换,那该怎么办?调用Replace两次,每次都分配一个新字符串,是否会影响性能?
using System;
using System.Web;

class Program
{
    static void Main()
    {
        string value = "http://url.com/index?foo=[01234]&bar=1";
        var uriBuilder = new UriBuilder(value);
        var query = HttpUtility.ParseQueryString(uriBuilder.Query);
        query["foo"] = query["foo"].Replace("[", "").Replace("]", "");
        uriBuilder.Query = query.ToString();
        value = uriBuilder.ToString();

        Console.WriteLine(value);
    }
}
var value = "http://url.com/index?foo=[01234]&bar=1"; 
value = Regex.Replace(value, "foo=\\[(.*?)\\]","foo=$1");