繁体   English   中英

仅用3个字符替换字符串中间

[英]Replace the middle of a string with only 3 chars

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

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

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

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

可以创建一个扩展方法,像这样

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 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;           

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

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

通过内容可以轻松得多,您可以在其中使用Replace方法将一个子字符串替换为另一个。

正则表达式是一个选择,但即使那样也不是很漂亮:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM