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

String replace in specific positioned in c#

我有一个字符串Classic-T50 (Black+Grey) 当我通过查询字符串发送到它将显示在下一页

Classic-T50 (Black Grey)

所以我想在 space 中添加 + in space 在此字符串中仅在 bracket() 部分内。

Classic-T50 (Black+Grey).

我试过string.Replace(" ","+")。但它产生了

Classic-T50+(Black+Grey).

但我想要字符串 Classic-T50 (Black+Grey).

请帮帮我。

尝试:

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

您可以对其进行 UrlEncode 以保留特殊字符:

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(' ', '+');
}

您可以使用 regular expression 替换括号内的所有空格:

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)

此方法适用于任何输入字符串。例如,字符串 Caption ( A B C D ) 将转换为 Caption (+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());
}

StringBuilder.Replace Method (Char, Char, Int32, Int32

使用此代码

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();
        }
    }