我有这样的字符串:
var abc = "00345667";
var def = "002776766";
前两个字符始终为“00
”。如何将这些更改为“01
”?
答案 0 :(得分:12)
您可以使用Substring()。
var res = "01" + abc.Substring(2);
修改要完成更多替换时的一些性能考虑。
如果要替换更多子字符串,可以使用StringBuilder,请阅读本文How to improve string concatenation performance in Visual C#
字符串连接VS字符串构建器
在Visual C / C ++中通过strcat()改进字符串连接的一种技术是将大字符数组分配为缓冲区并将字符串数据复制到缓冲区中。在.NET Framework中,字符串是不可变的;它不能被修改到位。 C#+连接运算符构建一个新字符串,并在连接大量文本时导致性能降低。
但是,.NET Framework包含一个针对字符串连接进行了优化的StringBuilder类。它提供了与在C / C ++中使用字符数组相同的好处,以及自动增加缓冲区大小(如果需要)并为您跟踪长度。本文中的示例应用程序演示了StringBuilder类的用法,并将性能与串联进行了比较。 Reference
使用StringBuilder将“002776766”更改为“012776766”。
StringBuilder sb = new StringBuilder(def);
sb[1] = '1';
def = sb.ToString();
答案 1 :(得分:5)
string result = string.Format("01{0}", abc.Substring(2));
string result = Regex.Replace(abc, "^00", "01");
答案 2 :(得分:2)
您可以使用Regex.Replace()
执行此操作,该System.Text.RegularExpressions
可在命名空间abc = Regex.Replace(abc ,"^00","01");
|
|
|->^ depicts that start of the string
中找到。
{{1}}
答案 3 :(得分:0)
试试这个
"00".Concat(abc.Substring(2));
"00".Concat(def.Substring(2));
答案 4 :(得分:0)
您可以使用Regex中的Replace替换功能。
like var abc = "00345667";
var newvar =Regex.Replace(abc, "^00", "01");
答案 5 :(得分:0)
public Observable<Boolean> saveOptionList(final List<Option> optionList) {
return Observable.fromCallable(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
mDaoSession.getOptionDao().insertInTx(optionList);
return true;
}
});
}
答案 6 :(得分:0)
var abc = "00345667";
var abc = $"01{abc.Substring(2)}";
答案 7 :(得分:0)
如果您使用的是 C# 8 或更高版本,您也可以使用 range 运算符来实现。可读性很强
var res = "01" + abc[2..];