C#字符串截取、分割与替换常用方法详解

巷口听风
巷口听风
发布时间:2026-10-14 | 2人浏览过
原创

在C#开发中,字符串处理是基础且高频的操作场景。本文总结了利用内置方法实现字符串分割、截取、替换及删除的核心技巧,包括使用Split按分隔符拆分、通过Substring定位提取子串,以及配合Replace进行内容清洗与格式调整,提供直接可用的代码范例。

结果或目标

针对给定的字符串变量,根据业务需求执行精确的字符合并、位置提取或文本替换,得到预期的格式化字符串结果。

准备条件

  • C# 环境(如 .NET Framework 或 .NET Core/5+)。
  • 一个包含测试数据的字符串变量,例如 string str = "GTAZB_JiangjBen_123";。

真实操作顺序

第1步:根据单个分隔字符用 Split 截取

目的:将长字符串按单一固定符号拆分为数组元素。

入口:调用 Split(char) 方法。

string st = "GT123_1";
string[] sArray = st.Split('_');
// 结果: sArray[0]="GT123", sArray[1]="1"
Console.WriteLine(string.Join(", ", sArray));

完成状态:原始字符串被成功拆解为多个子串。

第2步:利用多个字符来分隔字符串

目的:当分隔符不唯一时,支持同时识别多种字符作为断点。

入口:调用 Split(char[]) 方法。

string str = "GTAZB_JiangjBen_123";
// 定义分隔字符数组:下划线 '_' 和小写字母 'j'
string[] sArray = str.Split(new char[] { '_', 'j' });
foreach (string e in sArray)
{
    Console.WriteLine(e);
}
// 结果: GTAZB, Jiang, Ben, 123 (注意原文示例中区分大小写,此处按逻辑修正演示)
// 若严格按原文 'j' 小写匹配,则 'J' 不被视为分隔符。
// 原文示例代码: str.Split(new char[2] { 'j', '_' })

完成状态:字符串按任意指定字符组合进行切割。

第3步:根据字符串或字符串组来截取

目的:以完整的多字符序列作为分隔标记进行拆分。

入口:调用 Split(string[], StringSplitOptions) 方法。

string str = "GTAZB_JiangjBen_123";
// 以 "Ji" 和 "jB" 作为分隔串
string[] sArray = str.Split(new string[] { "Ji", "jB" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string e in sArray)
{
    Console.WriteLine(e);
}
// 结果: GTAZB_, ang, en_123
// 说明: "Ji" 被移除,"jB" 被移除,剩余部分保留

完成状态:多字符模式被精准剔除,生成新的字符串数组。

第4步:提取字符串中的第 i 个字符开始的长度为 j 的子串

目的:从字符串中间截取一段固定长度的内容。

入口:调用 Substring(int startIndex, int length) 方法。

注意:C# 索引从 0 开始,若需求描述中的“第i个”指人类计数的第5个字符,代码中应传入 i-1。

string str = "GTAZB_JiangjBen_123";
int start = 3; // 对应索引 2
int length = 8;
// 从索引2('A')开始取8个字符: AZB_Jian
string result = str.Substring(start - 1, length);
Console.WriteLine(result);

完成状态:获得指定的子字符串片段。

第5步:提取字符串右数长度为 i 的字符串

目的:获取字符串末尾的部分内容,无需计算总长度偏移量。

入口:使用 str.Length - i 作为起始索引调用 Substring。

string str = "GTAZB_JiangjBen_123";
int i = 5;
// 从倒数第5个字符开始直到末尾
string tSt = str.Substring(str.Length - i);
Console.WriteLine(tSt);
// 结果: n_123

完成状态:成功截取尾部指定长度的字符串。

第6步:替换字符串中的特定子串

目的:全局查找并替换指定文本,常用于数据清洗或格式转换。

入口:调用 Replace(string oldValue, string newValue)。

string str = "GTAZB_JiangjBen_123";
string tSt = str.Replace("123", "321");
Console.WriteLine(tSt);
// 结果: GTAZB_JiangjBen_321

完成状态:目标字符串中的旧内容被新内容完全替代。

第7步:删除字符串中的特定子串

目的:通过替换为空字符串来实现“删除”效果。

入口:调用 Replace(string oldValue, "")。

string str = "GTAZB_JiangjBen_123";
string tSt = str.Replace("Jiangj", "");
Console.WriteLine(tSt);
// 结果: GTAZB_Ben_123

完成状态:指定片段被移除,前后字符直接拼接。

第8步:删除指定位置的指定长度字符串

目的:精确移除字符串中间某一段已知起止范围的内容。

入口:需结合 Substring 手动重组,或使用扩展方法。原文使用了 Remove 语法,但在标准 C# string 类型中无此实例方法,通常需借助 StringBuilder 或重新拼接。

正确实现逻辑(基于标准 String):

string str = "GTAZB_JiangjBen_123";
int i = 5;     // 起始位置 (索引)
int length = 8; // 删除长度

// 拼接:删除部分之前的字符 + 删除部分之后的字符
string result = str.Substring(0, i) + str.Substring(i + length);
Console.WriteLine(result);
// 结果: GTAZBen_123
// 解析: "GTAZB" (前5位) + "Ben_123" (第13位之后)

风险提示:确保索引不越界,即 i + length <= str.Length。

完成判断

运行上述任一代码块后,控制台输出符合预期逻辑,未抛出 ArgumentOutOfRangeException 等异常,即表示操作成功。

简要总结

C# 提供了丰富的字符串 API 以满足各类处理需求。Split 擅长多维度的拆解,Substring 负责精确的位置提取,而 Replace 则是内容修改的主力。在实际开发中,建议优先检查 string.IsNullOrEmpty() 以防空引用错误,并注意索引从 0 开始的特性。以上就是C#几种截取字符串的方法小结的详细内容,更多关于C#字符串处理技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表