字符串在特定位置替换在 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());
}
使用此代码
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();
}
}
我有一个字符串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());
}
使用此代码
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();
}
}