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() | 检查空或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%的字符串操作需求!
浙公网安备 33010602011771号