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.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…