You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中从字符串删除指定位置字符的简单高效方法有哪些?

结论先行

C# 中 string 是不可变类型,不存在直接修改原字符串实例的方法,所有修改操作都会返回新的字符串实例,你提到的直接调用自定义方法修改原字符串的写法无法实现。但原生已经提供了等价于 RemoveAt 的能力,效率远高于转 List<char> 再处理的方案。


具体实现方案

1. 单次删除指定位置字符:直接用 string.Remove() 原生方法

string 自带的 Remove(int startIndex, int count) 方法就可以实现按索引删除指定数量字符的需求,不需要额外转集合:

  • 删除第一个字符(索引0,删除1个):
string something = "12+3-1";
something = something.Remove(0, 1);
Console.WriteLine(something); // 输出 "2+3-1"
  • 删除索引2的字符(删除1个):
string something = "12+3-1";
something = something.Remove(2, 1);
Console.WriteLine(something); // 输出 "123-1"

2. 多次批量修改字符串:用 StringBuilder 性能更高

如果需要连续做多次删除/插入/修改操作,用 StringBuilder 可以避免每次修改都生成新字符串实例的开销,它本身自带可变操作能力,也支持 Remove 方法:

StringBuilder sb = new StringBuilder("12+3-1");
sb.Remove(0, 1); // 删第一个字符
sb.Remove(1, 1); // 继续删当前索引1的字符
string result = sb.ToString();

关于转 List<char> 方案的说明

你提到的转 List 的写法逻辑上可行,但存在两次额外的全量拷贝开销(字符串转List一次,List删完转字符串又一次),性能比直接用 Remove 差,没有特殊需求不推荐使用。


内容的提问来源于stack exchange,提问作者Maciek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 22:36:10