C#中字符串方法示例
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以提高性能。