我可以用什么来替换这样的字符串中的中间字符:000
变成010
.
我是否必须使用正则表达式,如果是,我可以有模式吗?还是只用String.Replace
方法?
信息:字符串中总是有数字。
string s = "111000111";
string pattern = "000";
string replacement = "010";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(s, replacement);
lbloriginal.Text = s;
lblnew.Text = result;
替换过程背后没有明确的逻辑,查看问题,但假设您在某个时候知道哪个符号应该出现在中间,
可以创建一个扩展方法,这样说
public static class Extension
{
public static string ReplaceMiddle(this string value, char charToPutIn)
{
var builder = new StringBuilder(value);
builder[value.Length/2] = charToPutIn;
return builder.ToString();
}
}
然后像这样使用它:
"hello".ReplaceMiddle('5')
这将产生如下结果:
"he5lo"
正如预期的那样。
如果它只是一个 3 个字符的字符串:
String number = "123";
String res = number[0] + "5" + number[2];
用索引替换字符或子字符串有点尴尬。它会归结为
string newString = str.Substring(0,1) + newChar + str.Substring(2);
内容更容易,您可以使用Replace 方法将子字符串替换为另一个子字符串。
正则表达式是一种选择,但即便如此它也不漂亮:
Regex.Replace(str, "^(.).(.)$", "${1}1$2"