1. Concat()
- 字符串拼接
string s4 = string.Concat();
Console.WriteLine(s4); // 输出空字符串
-
功能:拼接多个字符串
-
重载形式:支持 0 个、多个字符串参数或实现
IEnumerable<string>
的集合 -
注意:调用无参版本会返回空字符串
""
2. Contains()
- 判断子串存在
bool b = "asfasfas".Contains("a"); // true
-
功能:检查字符串是否包含指定子串
-
参数:待查找的字符串(非字符)
-
注意:
-
区分大小写
-
空字符串参数会返回
true
-
3. CopyTo()
- 复制到字符数组
string source = "abc";
char[] dest = new char[5];
source.CopyTo(1, dest, 2, 2); // dest变为 {'\0', '\0', 'b', 'c', '\0'}
-
参数:
-
源字符串起始索引(从 0 开始)
-
目标字符数组
-
目标数组起始位置
-
复制的字符数量
-
-
异常:索引越界时抛出
ArgumentOutOfRangeException
4-5. ToUpper()
/ ToLower()
- 大小写转换
"Hello".ToUpper(); // "HELLO"
"WORLD".ToLower(); // "world"
-
特点:
-
基于当前线程的文化(Culture)进行转换
-
对非字母字符无影响
-
返回新字符串,原字符串不变
-
6. Replace()
- 替换字符 / 子串
"Hello".Replace('l', 'L'); // "HeLLo"
"abc".Replace("ab", "AB"); // "ABc"
-
重载:支持字符替换和字符串替换
-
注意:
-
替换所有匹配项
-
参数为
null
时抛出异常
-
7-8. StartsWith()
/ EndsWith()
- 前缀 / 后缀检查
"Hello".StartsWith("He"); // true
"World".EndsWith("ld"); // true
-
参数:待检查的字符串(区分大小写)
-
重载:支持指定比较规则(如忽略大小写)
9. Equals()
- 字符串相等比较
string a = "test";
string b = "test";
a.Equals(b); // true (值相等)
-
比较规则:
-
字符串类型比较值(不同于引用类型比较引用)
-
等同于
==
运算符 -
重载支持指定比较规则(如
StringComparison.OrdinalIgnoreCase
)
-
10-11. IndexOf()
/ LastIndexOf()
- 查找子串位置
"abcabc".IndexOf("bc"); // 1 (首次出现位置)
"abcabc".LastIndexOf("bc"); // 4 (最后出现位置)
-
参数:待查找的字符串(区分大小写)
-
返回值:
-
找到:第一个字符的索引
-
未找到:-1
-
12. IndexOfAny()
- 查找任意字符位置
"abc".IndexOfAny(new char[] { 'x', 'b' }); // 1 (首次出现'b'的位置)
-
参数:字符数组
-
功能:查找字符数组中任意字符首次出现的位置
13. IsNullOrEmpty()
- 空值检查
string s = null;
string.IsNullOrEmpty(s); // true
-
等价判断
s == null || s.Length == 0
-
注意:空格字符串(如
" "
)会返回false
14. Insert()
- 插入子串
"abc".Insert(1, "XYZ"); // "aXYZbc"
-
参数:
-
插入位置(索引)
-
待插入的字符串
-
-
异常:索引越界时抛出
ArgumentOutOfRangeException
15. Join()
- 连接字符串集合
string[] arr = { "a", "b", "c" };
string.Join("-", arr); // "a-b-c"
-
参数:
-
分隔符(字符串)
-
待连接的字符串集合
-
-
重载:支持
IEnumerable<string>
和参数数组
16. Remove()
- 删除子串
"abcdef".Remove(2); // "ab" (从索引2开始删除)
"abcdef".Remove(2, 3); // "abf" (从索引2开始删除3个字符)
-
重载:
-
Remove(startIndex)
- 删除从指定位置到末尾的所有字符 -
Remove(startIndex, count)
- 删除指定范围的字符
-
17. Split()
- 分割字符串
"a,b,c".Split(','); // 返回 ["a", "b", "c"]
-
参数:
-
分隔符数组(字符或字符串)
-
可选参数:
StringSplitOptions
(如RemoveEmptyEntries
)
-
-
注意:
-
连续分隔符会产生空字符串
-
空字符串分割返回包含一个空字符串的数组
-
18. ToCharArray()
- 转换为字符数组
string s = "abc";
char[] chars = s.ToCharArray(); // ['a', 'b', 'c']
-
功能:将字符串的每个字符复制到新数组
-
等价操作:
char[] chars = new char[s.Length]; s.CopyTo(0, chars, 0, s.Length);
19. Substring()
- 截取子串
"abcdef".Substring(2); // "cdef" (从索引2到末尾)
"abcdef".Substring(2, 3); // "cde" (从索引2开始截取3个字符)
-
参数:
-
起始索引
-
可选参数:长度(省略则截取到末尾)
-
-
异常:索引越界时抛出
ArgumentOutOfRangeException
20. Trim()
/ TrimStart()
/ TrimEnd()
- 去除空白
" abc ".Trim(); // "abc" (去除前后空格)
" abc ".TrimStart(); // "abc " (去除前导空格)
" abc ".TrimEnd(); // " abc" (去除尾部空格)
-
功能:去除字符串前后的空白字符(包括空格、制表符、换行符等)
-
重载:支持指定要去除的字符集合
字符串不可变性注意事项
所有这些方法都不会修改原字符串(字符串是不可变的),而是返回新字符串。频繁操作字符串建议使用StringBuilder
以提高性能。