当前位置: 首页 > news >正文

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拼接大量字符串时性能更好
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 命名空间来支持正则表达式功能。


🔹 基本使用

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)按模式拆分字符串
http://www.dtcms.com/a/271331.html

相关文章:

  • 基于YOLOv11的CF-YOLO,如何突破无人机小目标检测?
  • 光伏无人机3D建模:毫秒级精度设计
  • HarmonyOS从入门到精通:自定义组件开发指南(六):组件生命周期详解
  • vue3.2 前端动态分页算法
  • [Python] 区分方法 函数
  • 企业级智能体平台怎么选?字节、腾讯、360、FastGPT选哪个?
  • 【牛客刷题】小欧的选数乘积
  • K8S使用命令多集群管理配置
  • EUDR法案的核心内容,EUDR未来展望,EUDR对全球供应链的影响
  • Excel 常用高级用法
  • [特殊字符] Python 批量生成词云:读取词频 Excel + 自定义背景 + Excel to.png 流程解析
  • 【踩坑】python写超长字符到excel中被截断
  • TDengine 集群部署及启动、扩容、缩容常见问题与解决方案
  • 自建ELK vs 云商日志服务:成本对比分析
  • Apache Tomcat SessionExample 漏洞分析与防范
  • AMIS全栈低代码开发
  • 【NVIDIA-H100】基于 nvidia-smi 数据H100 GPU 功耗异常深度分析与解决方案
  • PiscTrace应用:从 YOLO-Pose 到深蹲与引体向上计数:实时健身动作分析与实现
  • 语音大模型速览(二)- cosyvoice
  • Flink-1.19.0源码详解-番外补充4-JobGraph图
  • Ubuntu 下 MySql 使用
  • qt-C++笔记之布局管理`space` 和 `margin`的区别
  • SQL注入与防御-第六章-3:利用操作系统--巩固访问
  • kbmMemTable Pro 7.82 Delphi 11 源代码
  • Spectre(幽灵漏洞)是什么?
  • Python-FAQ-单例模式
  • MyBatis之数据操作增删改查基础全解
  • Java常用设计模式大全
  • Kubernetes 存储入门
  • HTTP请求走私漏洞