一、最常用的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")); // False3.ToUpper()/ToLower()- 大小写转换
csharp
Console.WriteLine("Hello".ToUpper()); // HELLO Console.WriteLine("HELLO".ToLower()); // hello4.StartsWith()/EndsWith()- 检查开头结尾
csharp
string str2 = "张三大师傅"; Console.WriteLine(str2.StartsWith("张三")); // True Console.WriteLine(str2.EndsWith("师傅")); // True5.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)); // True7.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]); // 109.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() | 检查空或null | IsNullOrEmpty("")→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("旧", "新");五、特别提醒
易错点:
IsNullOrEmpty()vsIsNullOrWhiteSpace()IsNullOrEmpty(" ")→False(有空格)IsNullOrWhiteSpace(" ")→True(更好的选择)
字符串比较
==运算符:对于字符串比较内容Equals()方法:更明确,可以指定比较规则
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%的字符串操作需求! 🎯