10

我有这样的字符串:

var abc = "00345667";
var def = "002776766";

前两个字符始终为“ 00”。我怎样才能将这些更改为 " 01" ?

4

8 回答 8

16

您可以使用Substring( )。

var res = "01" + abc.Substring(2);

编辑需要进行更多替换时的一些性能考虑。

如果您有更多子字符串要替换,您可以使用 StringBuilder,请阅读这篇文章如何提高 Visual C# 中的字符串连接性能

字符串连接 VS 字符串生成器

在 Visual C/C++ 中通过 strcat() 改进字符串连接的一种技术是分配一个大字符数组作为缓冲区并将字符串数据复制到缓冲区中。在 .NET Framework 中,字符串是不可变的;它不能就地修改。C# + 连接运算符会构建一个新字符串,并在连接大量文本时导致性能下降。

但是,.NET Framework 包含一个针对字符串连接进行了优化的 StringBuilder 类。它提供与在 C/C++ 中使用字符数组相同的好处,以及自动增加缓冲区大小(如果需要)并为您跟踪长度。本文中的示例应用程序演示了 StringBuilder 类的使用,并将性能与串联进行了比较。参考

使用 StringBuilder 将“002776766”更改为“012776766”。

StringBuilder sb = new StringBuilder(def);
sb[1] = '1';    
def = sb.ToString();
于 2012-11-26T09:07:07.850 回答
8

看看Substringstring.Format

string result = string.Format("01{0}", abc.Substring(2));

正则表达式。替换

string result = Regex.Replace(abc, "^00", "01");
于 2012-11-26T09:07:38.513 回答
3

您可以使用Regex.Replace()可以在命名空间中找到的方法来执行此操作System.Text.RegularExpressions

abc = Regex.Replace(abc ,"^00","01");
                        |      
                        |
                        |->^ depicts that start of the string
于 2012-11-26T09:07:49.900 回答
0

试试这个

"00".Concat(abc.Substring(2));
"00".Concat(def.Substring(2));
于 2012-11-26T09:07:52.640 回答
0

您可以使用正则表达式中的替换功能。

like   var abc = "00345667";

       var newvar =Regex.Replace(abc, "^00", "01");     
于 2012-11-26T09:14:32.793 回答
0
var abc = "00345667";
var def = "002776766";
string str= string.Format("01{0}", abc.TrimStart('00'));
于 2017-11-20T05:24:58.820 回答
0

使用字符串插值

var abc = "00345667";
var abc = $"01{abc.Substring(2)}";
于 2018-09-28T15:04:11.383 回答
0

如果您使用的是 C# 8 或更高版本,您也可以使用范围运算符来执行此操作。它非常易读

var res = "01" + abc[2..];
于 2021-08-09T08:04:28.977 回答