当前位置: 首页 > 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.lryc.cn/news/583563.html

相关文章:

  • 基于物联网的智能家居控制系统设计与实现
  • 17-C#封装,继承,多态与重载
  • 【AIGC】讯飞长录音ASR转写,使用JAVA实现科大讯飞语音服务ASR转录功能:完整指南
  • JavaScript基础篇——第五章 对象(最终篇)
  • NLP革命二十年:从规则驱动到深度学习的跃迁
  • LLaMA-Omni 深度解析:打开通往无缝人机语音交互的大门
  • pip install av安装av库失败解决方法
  • Celery Django配置
  • 存储服务一NFS文件存储概述
  • Mysql基于belog恢复数据
  • 精准医疗,AR 锚定球囊扩张导管为健康护航​
  • 基于 Spark MLlib 的推荐系统实现
  • 打破传统,开启 AR 智慧课堂​
  • langchain从入门到精通(四十一)——基于ReACT架构的Agent智能体设计与实现
  • 基于BRPC构建高性能HTTP/2服务实战指南
  • 前端业务监控系统,异常上报业务,异常队列收集,异常捕获
  • 【实习篇】之Http头部字段之Disposition介绍
  • HTML + CSS + JavaScript
  • http get和http post的区别
  • C++ 中最短路算法的详细介绍
  • JAVA策略模式demo【设计模式系列】
  • LaCo: Large Language Model Pruning via Layer Collapse
  • Java 大视界 -- 基于 Java 的大数据分布式计算在生物信息学蛋白质 - 蛋白质相互作用预测中的应用(340)
  • windows指定某node及npm版本下载
  • Using Spring for Apache Pulsar:Message Production
  • Softmax函数的学习
  • 矩阵之方阵与行列式的关系
  • Flink-1.19.0源码详解6-JobGraph生成-后篇
  • Android Soundtrigger唤醒相关时序学习梳理
  • 常见 HTTP 方法的成功状态码200,204,202,201