C# 字符串替换在c中的特定位置#

C# 字符串替换在c中的特定位置#,c#,asp.net,regex,c#-4.0,C#,Asp.net,Regex,C# 4.0,我有一个字符串Classic-T50(黑色+灰色) 当我通过查询字符串发送到时,它将显示在下一页中 Classic-T50 (Black Grey) 所以我只想在这个字符串的括号()部分的空格中添加+ Classic-T50 (Black+Grey). 我尝试了string.Replace(“,“+”),但它产生了 Classic-T50+(Black+Grey). 但是我想要字符串Classic-T50(黑色+灰色)。 请帮帮我。试试: String.Replace("k ","k+")

我有一个字符串
Classic-T50(黑色+灰色)
当我通过查询字符串发送到时,它将显示在下一页中

Classic-T50 (Black Grey)
所以我只想在这个字符串的括号()部分的空格中添加+

Classic-T50 (Black+Grey).
我尝试了
string.Replace(“,“+”)
,但它产生了

Classic-T50+(Black+Grey).
但是我想要字符串
Classic-T50(黑色+灰色)。

请帮帮我。

试试:

String.Replace("k ","k+")

您可以对其进行URL编码以保留特殊字符:

Server.UrlEncode(mystring)
或者将+符号替换为“%252b”,然后对其进行编码:

string myTitle = mystring.Trim().Replace("+", "%252b"); 
Response.Redirect("~/default.aspx?title=" + Server.UrlEncode(myTitle));
请记住,一旦您尝试检索它,请对其进行解码:

Server.UrlDecode(Request.QueryString["title"]);

要修改的字符串的格式是什么?这个代码行吗

void Main()
{
    var str = "Classic-T50 (Black Grey)";

    Console.WriteLine(FormatWithPlus(str));
}

public string FormatWithPlus(string str){
    var str1 = str.Substring(0, str.IndexOf('('));
    var str2 = str.Substring(str.IndexOf('('));

    return str1 + str2.Replace(' ', '+');
}
可以使用替换括号内的所有空格:

var pattern = @"\s(?![^)]*\()";
var data = "Classic-T50 (Black Grey)";
var replacement = "+";
var regex = new Regex(pattern);
var transformedData = regex.Replace(data, replacement); // Classic-T50 (Black+Grey)
这种方法适用于任何输入字符串。例如,字符串
标题(abcd)
将转换为
标题(+A+B+C+D+)

其他链接:

  • 正则表达式解释:

使用
StringBuilder
并将其转换回
string
。StringBuilder与字符串的不同之处在于它们是可变的和非插入的。它将数据存储在数组中,因此您可以像在数组中一样替换字符:

void Main()
{
    var input = "Classic-T50 (Black Grey)";
    StringBuilder inputsb = new StringBuilder(input);
    var openParens = input.IndexOf('(');
    var closeParens = input.IndexOf(')');
    var count = closeParens - openParens;
    //Console.WriteLine(input);
    //inputsb[18] = '+';
    inputsb.Replace(' ', '+', openParens, count);
    Console.WriteLine(inputsb.ToString());
}
请参见使用此代码

public class Program
    {
        private static void Main(string[] args)
        {
            const string abc = "Classic-T50 (Black Grey)";
            var a = abc.Replace("k ", "k+");
            Console.WriteLine(a);
            Console.ReadKey();
        }
    }

您应该对字符串进行url编码。现在Gridview中的查询字符串如何编码?如果
%252b
您将获得
%2b
。你不需要对转义字符进行编码.老兄。。你太可怕了!!似乎您的需求已被细化为将括号内的所有空格替换为加号。您可以使用下面的字符串生成器示例;我将根据新的要求进行修改。