用3个字符替换字符串的中间部分

时间:2012-06-15 08:35:28

标签: c# regex replace

我可以使用什么来替换字符串中的中间字符:000变为010

我是否必须使用正则表达式,如果是的话,我可以使用该模式吗?或者只使用String.Replace方法?

信息:字符串中始终有数字。

5 个答案:

答案 0 :(得分:3)

在替换程序背后没有明确的逻辑,看看问题,但假设你在某个时候知道哪个符号应该出现在中间,

可以创建一个扩展方法,比如说这个

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"

正如所料。

答案 1 :(得分:2)

如果它只是一个3个字符的字符串:

String number = "123";
String res = number[0] + "5" + number[2];

答案 2 :(得分:2)

 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;           

答案 3 :(得分:1)

答案 4 :(得分:1)

用索引替换字符或子字符串有点尴尬。它可以归结为

string newString = str.Substring(0,1) + newChar + str.Substring(2);

内容更容易,您可以使用Replace method替换另一个子字符串。

正则表达式是一种选择,但即使这样也不是很好:

Regex.Replace(str, "^(.).(.)$", "${1}1$2"