C#字符串相关库函数运用梳理总结 + 正则表达式详解

C# 字符串常用库函数总结


🔹 1. 字符串比较

方法 说明 示例
string.Equals() 比较两个字符串是否相等(可忽略大小写) string.Equals("abc", "ABC", StringComparison.OrdinalIgnoreCase)
== / != 判断两个字符串是否相等/不等 "abc" == "abc"
string.Compare() 返回两个字符串的比较结果(-1, 0, 1) string.Compare("a", "b") // 返回 -1

🔹 2. 查找和判断

方法 说明 示例
Contains() 是否包含子串 "hello".Contains("ell") // true
StartsWith() 是否以指定子串开头 "hello".StartsWith("he") // true
EndsWith() 是否以指定子串结尾 "hello".EndsWith("lo") // true
IndexOf() 返回子串首次出现位置 "hello".IndexOf("l") // 2
LastIndexOf() 返回子串最后一次出现位置 "hello".LastIndexOf("l") // 3
IsNullOrEmpty() 判断是否为 null 或空字符串 string.IsNullOrEmpty(str)
IsNullOrWhiteSpace() 判断是否为 null、空或全是空白字符 string.IsNullOrWhiteSpace(" ")

🔹 3. 截取和拆分

方法 说明 示例
Substring(start, [length]) 从指定位置截取子串 "hello".Substring(1, 3) // "ell"
Split() 拆分字符串为数组 "a,b,c".Split(',') // ["a","b","c"]
Join() 拼接字符串数组 string.Join("-", new[] {"a", "b"}) // "a-b"

🔹 4. 替换与移除

方法 说明 示例
Replace() 替换子串 "abcabc".Replace("a", "x") // "xbcxbc"
Remove() 删除指定位置的子串 "hello".Remove(2, 2) // "heo"
Trim() 去除前后空白字符 " hello ".Trim() // "hello"
TrimStart() / TrimEnd() 去除前/后空白字符 " abc ".TrimStart() // "abc "

🔹 5. 大小写转换

方法 说明 示例
ToLower() 转小写 "Hello".ToLower() // "hello"
ToUpper() 转大写 "Hello".ToUpper() // "HELLO"

🔹 6. 格式化字符串

方法 说明 示例
string.Format() 按格式插入变量 string.Format("Hello {0}", "World") // "Hello World"
插值字符串($) 更现代的方式 $"Hello {name}"
ToString("格式") 对数字、日期等格式化 price.ToString("C") // 显示货币

🔹 7. 字符串构建推荐:StringBuilder

用途 示例
System.Text.StringBuilder 拼接大量字符串时性能更好
csharp 复制代码
var stringbuilder = new StringBuilder();
stringbuilder.Append("Hello ");
stringbuilder.Append("World");
string result = stringbuilder.ToString(); // "Hello World"

🔹 8. 正则表达式(高级查找与替换)

复制代码
using System.Text.RegularExpressions;
Regex.IsMatch("abc123", @"\d") // true
Regex.Replace("abc123", @"\d", "#") // "abc###"

using System.Text.RegularExpressions;
Regex.IsMatch("abc123", @"\d") // true
Regex.Replace("abc123", @"\d", "#") // "abc###"

📘 C# 正则表达式(Regex)详解


🔹 什么是正则表达式?

正则表达式是一种 用于匹配字符串中某种文本模式的工具,在文本查找、替换、验证等操作中非常强大。

C# 提供了 System.Text.RegularExpressions 命名空间来支持正则表达式功能。


🔹 基本使用

csharp 复制代码
using System.Text.RegularExpressions;

// 判断是否匹配
bool isMatch = Regex.IsMatch("abc123", @"\d"); // true

// 查找匹配内容
Match match = Regex.Match("abc123", @"\d+"); // "123"

// 查找所有匹配
MatchCollection matches = Regex.Matches("abc123def456", @"\d+"); // ["123", "456"]

// 替换匹配内容
string result = Regex.Replace("abc123", @"\d", "#"); // "abc###"

🔹 常用元字符(语法规则)

字符 含义 示例 匹配内容
. 任意一个字符 a.b 匹配 "acb", "a1b",不匹配 "ab"
\d 数字(0-9) \d+ 匹配 "123", "456"
\D 非数字 \D+ 匹配 "abc", "$%"
\w 单词字符(字母数字下划线) \w+ 匹配 "abc123_"
\W 非单词字符 \W+ 匹配 "@#$", 空格等
\s 空白字符(空格、\t、\n) \s+ 匹配空格、Tab、换行
\S 非空白字符 \S+ 匹配非空格内容
^ 行的开头 ^abc 匹配以 "abc" 开头的行
$ 行的结尾 abc$ 匹配以 "abc" 结尾的行
[...] 字符集合 [abc] 匹配 "a"、"b" 或 "c"
[^...] 非字符集合 [^0-9] 匹配非数字字符

🔹 数量词(重复匹配)

符号 含义 示例 匹配内容
* 匹配前一个字符 0 次或多次 a* 匹配 "", "a", "aa", "aaa"
+ 匹配前一个字符 1 次或多次 a+ 匹配 "a", "aa", "aaa"
? 匹配前一个字符 0 次或 1 次 a? 匹配 "", "a"
{n} 恰好 n 次 a{3} 匹配 "aaa"
{n,} 至少 n 次 a{2,} 匹配 "aa", "aaa", "aaaa"
{n,m} n 到 m 次之间 a{2,4} 匹配 "aa", "aaa", "aaaa"

🔹 分组与捕获

语法 说明 示例
(abc) 捕获组,匹配 abc (abc){2} → 匹配 "abcabc"
(?:abc) 非捕获组 不保存该分组内容
(?<name>abc) 命名捕获组 可通过名称访问
\1, \2... 引用之前的分组 (.)\1 匹配两个相同字符

🔹 常见匹配示例

目标 正则表达式 示例匹配
数字 ^\d+$ "123"
整数(含负号) ^-?\d+$ "-456"
浮点数 ^-?\d+(\.\d+)?$ "3.14", "-2"
邮箱地址 ^\w+@\w+\.\w+$ "test@mail.com"
手机号码(中国) ^1[3-9]\d{9}$ "13812345678"
日期(YYYY-MM-DD) ^\d{4}-\d{2}-\d{2}$ "2025-07-09"

🔹 C# 中 Regex 常用 API 汇总

方法 说明
Regex.IsMatch(input, pattern) 判断字符串是否匹配正则
Regex.Match(input, pattern) 返回第一个匹配项
Regex.Matches(input, pattern) 返回所有匹配项
Regex.Replace(input, pattern, replacement) 替换匹配内容
Regex.Split(input, pattern) 按模式拆分字符串