0

我可以用什么来替换这样的字符串中的中间字符:000变成010.

我是否必须使用正则表达式,如果是,我可以有模式吗?还是只用String.Replace方法?

信息:字符串中总是有数字。

4

4 回答 4

3
 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;           
于 2012-06-15T08:52:07.933 回答
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"

正如预期的那样。

于 2012-06-15T08:43:30.460 回答
2

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

String number = "123";
String res = number[0] + "5" + number[2];
于 2012-06-15T08:46:26.373 回答
1

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

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

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

正则表达式是一种选择,但即便如此它也不漂亮:

Regex.Replace(str, "^(.).(.)$", "${1}1$2"
于 2012-06-15T08:43:28.030 回答