C#字符串操作:11个必备手段全解析

一、最常用的11个字符串方法

1. IndexOf() - 查找字符位置

csharp

string str = "abcdefgabc";
Console.WriteLine(str.IndexOf("a"));     // 0(首次出现位置)
Console.WriteLine(str.IndexOf("h"));     // -1(未找到)
Console.WriteLine(str.IndexOf("bc"));    // 1(子串位置)
Console.WriteLine(str.IndexOf("f", 4));  // 5(从索引4开始找)

2. Contains() - 检查是否包含

csharp

Console.WriteLine(str.Contains("fg"));   // True
Console.WriteLine(str.Contains("he"));   // False

3. ToUpper() / ToLower() - 大小写转换

csharp

Console.WriteLine("Hello".ToUpper());    // HELLO
Console.WriteLine("HELLO".ToLower());    // hello

4. StartsWith() / EndsWith() - 检查开头结尾

csharp

string str2 = "张三大师傅";
Console.WriteLine(str2.StartsWith("张三"));   // True
Console.WriteLine(str2.EndsWith("师傅"));     // True

5. IsNullOrEmpty() - 空值检查

csharp

string str3 = "";
Console.WriteLine(string.IsNullOrEmpty(str3));   // True
str3 = null;
Console.WriteLine(string.IsNullOrEmpty(str3));   // True
str3 = " ";
Console.WriteLine(string.IsNullOrEmpty(str3));   // False(有空格)
// 建议用:IsNullOrWhiteSpace()

6. Equals() - 字符串比较

csharp

Console.WriteLine("abc".Equals("abc"));          // True
Console.WriteLine(string.Equals("ABC", "abc"));  // False(区分大小写)
Console.WriteLine(string.Equals("ABC", "abc", StringComparison.OrdinalIgnoreCase));  // True

7. Substring() - 截取字符串

csharp

Console.WriteLine("张三大师傅".Substring(1, 3)); // 三大师
Console.WriteLine("Hello".Substring(2));        // llo(从索引2到最后)

8. Split() - 分割字符串

csharp

string str4 = "2025/12/10";
string[] ss = str4.Split('/');
Console.WriteLine(ss[0]);  // 2025
Console.WriteLine(ss[1]);  // 12
Console.WriteLine(ss[2]);  // 10

9. Remove() - 删除字符

csharp

Console.WriteLine("2025/12/10".Remove(1, 4));  // 2/12/10
Console.WriteLine("2025/12/10".Remove(3));     // 202(只保留前3个)

10. Concat() - 拼接字符串

csharp

Console.WriteLine(string.Concat("张三", "李四", "王五"));  // 张三李四王五

11. Replace() - 替换字符

csharp

Console.WriteLine("2025/12/10".Replace("2025", "2026"));  // 2026/12/10
Console.WriteLine("a b c".Replace(" ", ""));              // abc

二、其他重要方法补充

12. LastIndexOf() - 从后往前找

csharp

Console.WriteLine("abcdefgabc".LastIndexOf("a"));  // 7(最后出现的a)

13. Join() - 连接字符串数组

csharp

Console.WriteLine(string.Join("-", "a", "b", "c"));  // a-b-c
string[] arr = { "苹果", "香蕉", "橙子" };
Console.WriteLine(string.Join("、", arr));           // 苹果、香蕉、橙子

14. CopyTo() - 复制到字符数组

csharp

char[] cl = new char[15];
"2025/12/10".CopyTo(1, cl, 5, 6);
// 结果:cl[5..10] = "025/12"

15. Format() - 字符串格式化

csharp

string name = "张三";
double gz = 10000;
Console.WriteLine(string.Format("姓名:{0}; 工资:{1}", name, gz));
Console.WriteLine(string.Format("{0:C2}", gz));  // ¥10,000.00(货币格式)
Console.WriteLine(string.Format("{0:F2}", 3.14159));  // 3.14(保留2位小数)

16. ToCharArray() - 转为字符数组

csharp

char[] chars = "Hello".ToCharArray();
foreach (char c in chars)
{
    Console.Write(c + "-");  // H-e-l-l-o-
}

三、常用方法分类总结

查找类

方法用途返回值
IndexOf()查找字符/子串首次出现位置索引值(-1为未找到)
LastIndexOf()从后往前查找索引值
Contains()检查是否包含bool

转换类

方法用途示例
ToUpper()转大写"abc"→"ABC"
ToLower()转小写"ABC"→"abc"
ToCharArray()转字符数组"Hi"→['H','i']

✂️ 截取操作类

方法用途示例
Substring()截取子串"Hello".Substring(1,3)→"ell"
Split()分割字符串"a,b,c".Split(',')→["a","b","c"]
Remove()删除部分字符"Hello".Remove(1,3)→"Ho"

连接与替换

方法用途示例
Concat()连接多个字符串Concat("a","b")→"ab"
Join()用分隔符连接数组Join("-",["a","b"])→"a-b"
Replace()替换字符/子串"abc".Replace("b","x")→"axc"

✅ 检查与比较

方法用途示例
StartsWith()是否以...开头"Hello".StartsWith("He")→true
EndsWith()是否以...结尾"Hello".EndsWith("lo")→true
Equals()比较是否相等"a".Equals("A")→false
IsNullOrEmpty()检查空或nullIsNullOrEmpty("")→true

格式化类

方法用途示例
Format()格式化字符串Format("{0:C}",100)→"¥100.00"

四、快速参考表(最常用)

csharp

// 1. 查找位置
int pos = str.IndexOf("查找内容");

// 2. 检查包含
bool has = str.Contains("内容");

// 3. 大小写转换
string upper = str.ToUpper();
string lower = str.ToLower();

// 4. 检查开头结尾
bool starts = str.StartsWith("开头");
bool ends = str.EndsWith("结尾");

// 5. 空值检查
bool isEmpty = string.IsNullOrEmpty(str);
bool isBlank = string.IsNullOrWhiteSpace(str);

// 6. 字符串比较
bool equal = str1.Equals(str2);
bool equalIgnoreCase = string.Equals(str1, str2, StringComparison.OrdinalIgnoreCase);

// 7. 截取子串
string sub = str.Substring(开始位置, 长度);

// 8. 分割字符串
string[] parts = str.Split(分隔符);

// 9. 删除字符
string removed = str.Remove(开始位置, 删除长度);

// 10. 拼接字符串
string combined = string.Concat(str1, str2, str3);

// 11. 替换内容
string replaced = str.Replace("旧", "新");

五、特别提醒

易错点:

  1. IsNullOrEmpty() vs IsNullOrWhiteSpace()

    • IsNullOrEmpty(" ") → False(有空格)

    • IsNullOrWhiteSpace(" ") → True(更好的选择)

  2. 字符串比较

    • == 运算符:对于字符串比较内容

    • Equals() 方法:更明确,可以指定比较规则

  3. Substring() 索引从0开始

    csharp

    "Hello".Substring(1, 3)  // "ell"(索引1开始,取3个)

性能建议:

  • 大量字符串拼接使用 StringBuilder

  • 频繁查找使用 Contains() 比 IndexOf() > -1 更语义化

  • 字符串比较考虑使用 Ordinal 或 OrdinalIgnoreCase 提高性能


总结卡片

text

 找位置:IndexOf, LastIndexOf
✅ 查包含:Contains, StartsWith, EndsWith
 改格式:ToUpper, ToLower
✂️ 切分片:Substring, Split, Remove
 连起来:Concat, Join, Replace
 比一比:Equals, Compare
⚠️ 检空值:IsNullOrEmpty, IsNullOrWhiteSpace

记住这些方法,就能应对90%的字符串操作需求!

posted @ 2026-01-10 21:09  clnchanpin  阅读(69)  评论(0)    收藏  举报