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.pswp.cn/pingmian/88110.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88110.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/88110.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

投机采样(Speculative Decoding)

投机采样&#xff08;Speculative Decoding&#xff09; 是一种加速大型语言模型&#xff08;LLM&#xff09;推理的技术&#xff0c;其核心思想是通过预生成候选token序列并异步校验&#xff0c;从而减少主模型的计算量&#xff0c;同时保持生成结果的准确性。 核心思想是通过…

如何将华为手机中的照片传输到电脑

华为手机在众多手机品牌中以其出色的品质脱颖而出&#xff0c;尤其是其摄像头功能。有时&#xff0c;你可能在华为手机上积累了太多有意义的照片&#xff0c;想要将这些照片上传到电脑以释放手机存储空间。然而&#xff0c;出于用户信息安全的考虑&#xff0c;一些便捷的方法可…

whitt算法之特征向量的尺度

whitt中特征值不相等判别条件另一个条件的意思&#xff0c; 实际上这两个条件都没用&#xff0c;不用看&#xff0c;特征值排序&#xff0c;如果现在顺序对λ1/λ1‘ w λ2/λ2 -w 此时取相位就是0&#xff0c;最小了 如果相反就是面的是0我的代码用最优相位内积去交换位置公…

【Note】《深入理解Linux内核》 第十九章:深入理解 Linux 进程通信机制

《深入理解Linux内核》 第十九章&#xff1a;深入理解 Linux 进程通信机制&#xff08;Process Communication&#xff09;关键词&#xff1a;IPC、信号、管道、FIFO、消息队列、信号量、共享内存、套接字、内核对象、同步机制一、进程通信概述 1.1 为什么需要进程通信 在 Linu…

【Mac 从 0 到 1 保姆级配置教程 19】- 英语学习篇-我的英语工作流分享(AI 辅助学习)

文章目录前言听力沉浸式翻译阅读Easydict配置自定义字典&#xff08;重点&#xff09;欧陆词典沙拉查词沉浸式翻译写作Eearthworm英文提问口语最后学习资料系列教程前言 本文介绍一下我日常如何学习和使用英语的工作流&#xff0c;包括一些常用好用的工具&#xff0c;好的工具…

从库函数到API接口,深挖不同语言背后的“封装”与“调用”思想

个人主页-爱因斯晨 优秀文章推荐 文章目录个人主页-爱因斯晨优秀文章推荐引言一、三种调用机制概述C语言的库函数Python 的导包机制Java 的 API 接口调用综上&#xff1a;二、它们的相同点&#xff1a;封装与调用三、不同之处**对比核心维度****细节串讲**1. **C 语言&#xf…

基于NCNN框架在Android平台实现YOLOv8目标检测模型的高效部署与实践

随着移动设备计算能力的提升&#xff0c;越来越多的深度学习模型被部署到移动端&#xff0c;以实现实时、低延迟的应用场景。YOLO系列的在目标检测任务中表现出色&#xff0c;具有精度高、速度快的优势。本文将详细介绍如何基于NCNN框架 &#xff0c;在Android平台 上高效部署Y…

华为动态路由配置

问题描述&#xff1a;针对四个路由器在不同的网段场景中&#xff0c;对四个路由器进行动态路由配置。下面以如下场景为例&#xff0c;介绍详细配置过程。配置过程&#xff1a; 1、每个路由器的接口配置IP地址 路由器AR1中每个接口配置IP地址。 sys # 进入系统视图 interface g…

分布式事务解决方案(三)

在Java分布式系统领域&#xff0c;传统强一致性方案&#xff08;如2PC、3PC&#xff09;在高并发、复杂业务场景下暴露出性能瓶颈和阻塞问题。而Saga模式与事件溯源&#xff08;Event Sourcing&#xff09;作为更具弹性和扩展性的解决方案&#xff0c;逐渐成为分布式事务处理和…

【时时三省】(C语言基础)通过指针引用数组

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省数组元素的指针一个变量有地址&#xff0c;一个数组包含若干元素&#xff0c;每个数组元素都在内存中占用存储单元&#xff0c;它们都有相应的地址。指针变量既然可以指向变量&#xff0c;当然…

【WEB】Polar靶场 21-25题 详细笔记

二十一.php very nicephp又是你 ,但是经过这么多次折磨后我感觉我已经有一点抗性了老规矩&#xff0c;先看知识点PHP 序列化是将 PHP 变量&#xff08;如对象、数组&#xff09;转换为字符串的过程&#xff0c;便于存储或传输。反序列化则是将字符串还原为原始变量。这在缓存、…

【Guava】1.0.设计虚拟机的方向

【Guava】1.0.设计虚拟机的方向虚拟机是什么&#xff1f;栈式虚拟机栈式虚拟机的优缺点题外话虚拟机是什么&#xff1f; 虚拟机&#xff08;VirtualMachine, VM&#xff09;是一种计算机程序或系统&#xff0c;它通过软件模拟物理计算机的硬件运行环境&#xff0c;使得多个操作…

[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的高校实验室资源综合管理系统,推荐!

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本高校实验室资源综合管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大…

Spring Boot:影响事务回滚的几种情况

一、Controller 捕获异常导致事务失效 需求 我们有一个用户注册服务&#xff0c;注册时需要&#xff1a; 创建用户账户分配初始积分发送注册通知 这三个操作需要在同一个事务中执行&#xff0c;任何一步失败都要回滚。 错误示例&#xff1a;Controller 捕获异常导致事务失效 Re…

如何避免分布式爬虫被目标网站封禁?

在分布式爬虫的大规模数据采集场景中&#xff0c;避免被目标网站封禁的核心逻辑是&#xff1a;通过技术手段模拟真实用户行为&#xff0c;降低爬虫行为的可识别性&#xff0c;同时建立动态适配机制应对网站反爬策略的升级。以下从请求伪装、行为控制、资源管理、反爬对抗四个维…

Maven 打包排除特定依赖的完整指南(详细方法 + 示例)

前言 在使用 Maven 构建 Java 项目时&#xff0c;我们常常需要对项目的打包过程进行精细化控制&#xff0c;尤其是希望排除某些特定的依赖库。这可能是为了减小最终构建产物的体积、避免版本冲突&#xff0c;或者仅仅是为了满足不同环境下的部署需求。 本文将详细介绍如何在 Ma…

Terraform `for_each` 精讲:优雅地自动化多域名证书验证

大家好&#xff0c;在云原生和自动化运维的世界里&#xff0c;Terraform无疑是基础设施即代码&#xff08;IaC&#xff09;领域的王者。它强大的声明式语法让我们能够轻松地描述和管理云资源。然而&#xff0c;即使是经验丰富的工程师&#xff0c;在面对某些动态场景时也可能会…

C++标准库中各种互斥锁的用法 mutex

示例 仅供参考学习 #include <mutex> #include <shared_mutex> #include <thread> #include <chrono> #include <iostream> #include <vector>// // 1. std::mutex - 基本互斥锁 // void basic_mutex_example() {std::mutex mtx;int cou…

Android Handler机制与底层原理详解

Android 的 Handler 机制是跨线程通信和异步消息处理的核心框架&#xff0c;它构成了 Android 应用响应性和事件驱动模型的基础&#xff08;如 UI 更新、后台任务协调&#xff09;。其核心思想是 “消息队列 循环处理”。 核心组件及其关系Handler (处理器): 角色: 消息的发送…

jQuery JSONP:实现跨域数据交互的利器

jQuery JSONP&#xff1a;实现跨域数据交互的利器 引言 随着互联网的发展&#xff0c;跨域数据交互的需求日益增加。在Web开发中&#xff0c;由于同源策略的限制&#xff0c;直接通过XMLHttpRequest请求跨域数据会遇到诸多问题。而JSONP&#xff08;JSON with Padding&#xff…