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");