C# 字符串处理与正则表达式
在C#中,字符串(string
)是一个非常重要的数据类型,用于表示文本数据。C#提供了一系列丰富的方法和属性来处理字符串,包括拼接、截取、查找、替换、格式化等操作。
-
字符串拼接
- 可以使用
+
运算符来拼接字符串。 - 也可以使用
String.Concat
方法或String.Join
方法来拼接多个字符串。
string str1 = "Hello"; string str2 = "World"; string result = str1 + " " + str2; // 使用+运算符拼接 string result2 = String.Concat(str1, " ", str2); // 使用Concat方法拼接 string[] words = { "Hello", "beautiful", "world" }; string result3 = String.Join(" ", words); // 使用Join方法拼接数组中的字符串
- 可以使用
-
字符串截取
- 可以使用
Substring
方法来截取字符串的一部分。 - 也可以使用索引器来访问字符串中的单个字符或子字符串。
string str = "Hello, World!"; string substring = str.Substring(7, 5); // 从索引7开始截取5个字符,得到"World" char firstChar = str[0]; // 访问第一个字符,得到'H'
- 可以使用
-
字符串查找与替换
- 可以使用
IndexOf
方法来查找子字符串或字符在字符串中的位置。 - 可以使用
Replace
方法来替换字符串中的子字符串或字符。
string str = "Hello, World!"; int index = str.IndexOf("World"); // 查找"World"的位置,得到7 string replacedStr = str.Replace("World", "C#"); // 将"World"替换为"C#",得到"Hello, C#!"
- 可以使用
-
字符串格式化
- 可以使用
String.Format
方法或插值字符串($"{expression}"
)来格式化字符串。
int age = 30; string formattedStr = String.Format("I am {0} years old.", age); // 使用String.Format格式化 string interpolatedStr = $"I am {age} years old."; // 使用插值字符串格式化
- 可以使用
C# 正则表达式
正则表达式(Regular Expressions)是一种强大的文本处理工具,用于匹配、查找、替换和解析字符串中的模式。C#通过System.Text.RegularExpressions
命名空间提供了对正则表达式的支持。
-
正则表达式类
Regex
类:表示一个不可变的正则表达式。Match
类:表示单个正则表达式匹配的结果。MatchCollection
类:表示匹配正则表达式模式的所有成功匹配的集合。
-
正则表达式语法
正则表达式使用一种特殊的语法来定义模式,这些模式可以包含普通字符(如字母和数字)以及特殊字符(如
.
、*
、?
、+
等),这些特殊字符具有特殊的含义。 -
常用方法
Regex.IsMatch(string input, string pattern)
:判断输入字符串是否与正则表达式模式匹配。Regex.Match(string input, string pattern)
:在输入字符串中搜索与正则表达式模式匹配的第一个子字符串。Regex.Matches(string input, string pattern)
:在输入字符串中搜索与正则表达式模式匹配的所有子字符串。Regex.Replace(string input, string pattern, string replacement)
:在输入字符串中替换与正则表达式模式匹配的所有子字符串。
-
示例
using System; using System.Text.RegularExpressions;class Program {static void Main(){string input = "Hello, World! 123";string pattern = @"\d+"; // 匹配一个或多个数字bool isMatch = Regex.IsMatch(input, pattern); // 判断是否匹配Console.WriteLine("Is match: " + isMatch); // 输出: Is match: TrueMatch match = Regex.Match(input, pattern); // 获取第一个匹配项Console.WriteLine("First match: " + match.Value); // 输出: First match: 123MatchCollection matches = Regex.Matches(input, pattern); // 获取所有匹配项foreach (Match m in matches){Console.WriteLine("Match: " + m.Value); // 输出: Match: 123(在这个例子中只有一个匹配项)}string replaced = Regex.Replace(input, pattern, "XXX"); // 替换匹配项Console.WriteLine("Replaced string: " + replaced); // 输出: Replaced string: Hello, World! XXX} }