csharp:字符串处理

C# 字符串处理 (String Processing)

在 C# 中,`string` 是一个引用类型,但它具有不可变性 (Immutability)。这意味着一旦创建了字符串对象,就不能修改它的值。所有看似修改字符串的方法(如 `Replace`, `Substring`)实际上都是返回了一个新的字符串对象。

使用 `Length` 属性获取字符串中字符的个数。

// 定义字符串
string k = "scdmckl";
 
// 获取长度
int num = k.Length; 
// num 的值为 7

在 Windows 系统中,标准的换行符是 `\r\n` (回车 + 换行)。 * 扩展知识:为了跨平台兼容性,建议使用 `Environment.NewLine`。

string str = "第一行" + "\r\n" + "第二行";
// 或者
string str2 = "第一行" + Environment.NewLine + "第二行";

`Substring` 是最常用的字符串截取方法,它有两个主要的重载版本。

方法 语法 说明
截取指定长度 `Substring(int startIndex, int length)` 从 `startIndex` 开始,截取 `length` 个字符。
截取到末尾 `Substring(int startIndex)` 从 `startIndex` 开始,一直截取到字符串末尾。
string str1 = "sacfvd";
// 从索引 0 开始,取 3 个字符
string str2 = str1.Substring(0, 3); 
// 结果: "sac"

这里有两种思路:使用 `Remove` 或者使用 `Substring`(取剩余部分)。

string str1 = "sacfvd";
 
// 方法 1: 使用 Remove(startIndex, count)
// 从索引 0 开始,移除 3 个字符
string res1 = str1.Remove(0, 3); 
// 结果: "fvd"
 
// 方法 2: 使用 Substring(startIndex)
// 从索引 3 开始截取直到末尾(相当于跳过了前 3 个)
string res2 = str1.Substring(3); 
// 结果: "fvd"
 
// ! 注意:原笔记中 str1.Substring(0, 3) 的结果是 "sac",并非去掉前 n 个,而是保留前 n 个。

场景:去除前 2 个字符,保留随后的 5 个字符。

string str1 = "mabcdefg";
// 从索引 2 ('b') 开始,截取 5 个字符
string str2 = str1.Substring(2, 5);
// 结果: "bcdef"
 
// WinForms 示例应用
// textBox8.Text = textBox7.Text.Substring(2, 5);

利用 `Length` 属性计算最后一个字符的索引。

string str1 = "mabcd";
// 索引 = 总长度 - 1
string lastChar = str1.Substring(str1.Length - 1, 1);
// 结果: "d"

由于字符串的不可变性,必须将修改后的结果赋值给变量。

将字符串中指定的子串替换为新内容。

string str1 = "mabcd";
// 将 "abc" 替换为 "DEF"
string str2 = str1.Replace("abc", "DEF");
// 结果: "mDEFd"

可以将字符串视为字符的只读数组,通过索引 `[]` 访问。

string text = "Hello";
// 获取索引为 1 的字符
char c = text[1]; 
// 结果: 'e' (注意类型是 char,不是 string)
 
// WinForms 示例应用
/*
    string a = textBox12.Text;
    int index = Convert.ToInt32(读取索引号.Text);
    char b = a[index];
    textBox13.Text = b.ToString(); // char 转 string 显示
*/

如果需要修改字符串中的特定字符,通常先转为数组,修改后再转回字符串。

string str = "abcdef";
// 转换为 char 数组
char[] chars = str.ToCharArray();
// chars[0] = 'a', chars[1] = 'b'...

`Split` 方法用于根据分隔符将字符串拆分为字符串数组。

场景:获取特定字符前的部分,或者分割数据。

string data = "value1,value2,,value3";
 
// 简单分割
string[] parts = data.Split(',');
 
// 高级分割:去除空条目 (StringSplitOptions.RemoveEmptyEntries)
// 示例:去除字符 'a' 前的一段(实际逻辑取决于数据结构,这里演示 Split 取第一项)
string input = "123a456";
string[] result = input.Split(new char[] { 'a' }, StringSplitOptions.RemoveEmptyEntries);
 
// 获取分割后的第一部分
string firstPart = result[0]; 
// 结果: "123"

比较两个字符串的内容是否相同。

string k = "sc";
string L = "sc";
 
// 方法 1: 使用 Equals 方法
bool isSame = k.Equals(L); // true
 
// 方法 2: 使用 == 运算符 (C# 中 string 重载了 ==)
bool isSame2 = (k == L); // true
 
// 扩展:忽略大小写比较
bool isSameIgnoreCase = k.Equals("SC", StringComparison.OrdinalIgnoreCase);

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • csharp/字符串处理.txt
  • 最后更改: 2025/11/21 10:43
  • 张叶安