c#中特定位置的字符串替换
Posted
技术标签:
【中文标题】c#中特定位置的字符串替换【英文标题】:String replace in specific positioned in c# 【发布时间】:2015-10-18 20:36:54 【问题描述】:我有一个字符串Classic-T50 (Black+Grey)
当我通过查询字符串发送到时,它将显示在下一页中
Classic-T50 (Black Grey)
所以我想在这个字符串的空格中添加 + 只在括号()部分。
Classic-T50 (Black+Grey).
我试过string.Replace(" ","+")
。但它会产生
Classic-T50+(Black+Grey).
但我想要字符串Classic-T50 (Black+Grey).
请帮帮我。
【问题讨论】:
你应该对你的字符串进行 url 编码。 Gridview 中的查询字符串您可以使用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+)
。
其他链接:
正则表达式解释:https://regex101.com/r/aN8fV2/1 MSDN: Regex.Replace Method (String, String)【讨论】:
老兄.. 你太棒了!!【参考方案2】:您要修改的字符串的格式是什么?这段代码能用吗?
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(' ', '+');
【讨论】:
【参考方案3】:使用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
【讨论】:
【参考方案4】:尝试:
String.Replace("k ","k+")
【讨论】:
似乎您的要求已经过细化,以用加号替换括号内的所有空格。您可以使用下面的字符串生成器示例;我会根据新要求进行修改。【参考方案5】:使用此代码
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();
【讨论】:
【参考方案6】:您可以对其进行 UrlEncode 以保留特殊字符:
Server.UrlEncode(mystring)
或者用“%252b”替换+号,然后编码:
string myTitle = mystring.Trim().Replace("+", "%252b");
Response.Redirect("~/default.aspx?title=" + Server.UrlEncode(myTitle));
一旦您尝试检索它,请记住对其进行解码:
Server.UrlDecode(Request.QueryString["title"]);
【讨论】:
如果是"%252b
,您将得到%2b
。您不需要编码转义字符。以上是关于c#中特定位置的字符串替换的主要内容,如果未能解决你的问题,请参考以下文章