C#基础知识之字符串和正则表达式
一、字符串
1. 字符串的定义
在 C# 中,字符串是一个不可变的对象,表示文字和其他字符序列。C# 中的字符串对象是 System.String 类型的实例。创建字符串即是创建 String 对象,并使用双引号或 @-引号字符串来表示字符串值。如:
string str1 = "Hello world!"; // 使用双引号
string str2 = @"Hello\tworld!"; // 使用 @-引号,可以包含转义符
2. 字符串的常见操作
下面是一些常见的字符串操作:
2.1 字符串连接
可以使用 + 或 String.Concat 方法把字符串连接在一起。
string str1 = "Hello";
string str2 = "world!";
string str3 = str1 + " " + str2; // 字符串连接
string str4 = String.Concat(str1, " ", str2); // 使用 Concat 方法连接字符串
2.2 子字符串
可以使用 Substring 方法获取字符串的子串。
string str = "Hello, world!";
string subStr1 = str.Substring(0, 5); // 获取前 5 个字符
string subStr2 = str.Substring(7); // 从第 8 个字符截取到末尾
2.3 字符串替换
可以使用 Replace 方法替换字符串中的指定字符或字符串。
string str = "Hello, world!";
string newStr = str.Replace("world", "dotnet");
2.4 字符串比较
可以使用 ==、!=、Equals 方法等来比较两个字符串是否相等。
string str1 = "Hello, world!";
string str2 = "Hello, World!";
bool isEqual1 = str1 == str2; // false
bool isEqual2 = str1.Equals(str2, StringComparison.OrdinalIgnoreCase); // true,不区分大小写
2.5 字符串分割
可以使用 Split 方法按指定的分隔符将字符串分割成字符串数组。
string str = "apple, banana, kiwi";
string[] fruits = str.Split(',');
3. 示例说明
3.1 遍历字符串中的字符
string str = "Hello, world!";
foreach (char c in str)
{
Console.WriteLine(c);
}
输出:
H
e
l
l
o
,
w
o
r
l
d
!
3.2 把字符串中的数字提取出来
string input = "abc123efg456hij789";
string pattern = @"\d+";
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
输出:
123
456
789
二、正则表达式
1. 正则表达式的定义
正则表达式可以用于匹配和处理字符串。它是一种通用的字符串模式匹配方式,定义了一种规则来描述特定模式的文本格式。在 C# 中,可以使用 System.Text.RegularExpressions 命名空间中的正则表达式类库来对字符串进行模式匹配和处理。
2. 正则表达式的语法
下面是一些常见的正则表达式语法:
字符 | 说明 |
---|---|
^ | 匹配字符串开始位置 |
$ | 匹配字符串结束位置 |
. | 匹配任一字符 |
* | 匹配前面的字符 0 次或多次 |
+ | 匹配前面的字符 1 次或多次 |
? | 匹配前面的字符 0 次或 1 次 |
[] | 匹配方括号里的任一字符 |
[^] | 不匹配方括号里的任一字符 |
() | 分组匹配,可以使用 $1、$2、$3… 访问 |
3. 常见操作
下面是一些常见的正则表达式操作:
3.1 匹配
可以使用 Regex.IsMatch 方法判断一个字符串是否匹配指定的正则表达式。
string input = "abc123";
string pattern = @"\d+";
bool isMatch = Regex.IsMatch(input, pattern);
3.2 提取
可以使用正则表达式的分组语法提取字符串中的指定部分。
string input = "abc123";
string pattern = @"(\D+)(\d+)";
Match match = Regex.Match(input, pattern);
string str1 = match.Groups[1].Value; // "abc"
string str2 = match.Groups[2].Value; // "123"
4. 示例说明
4.1 验证密码是否符合要求
string password = "123456";
string pattern = @"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$";
bool isValid = Regex.IsMatch(password, pattern);
该正则表达式验证密码必须包含字母和数字,且长度至少为 8。
4.2 验证电子邮件地址是否正确
string email = "abc@abc.com";
string pattern = @"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$";
bool isValid = Regex.IsMatch(email, pattern);
该正则表达式验证电子邮件地址是否符合常见的规则,如包含用户名、域名和 TLD,使用英文字母、数字、下划线和连字符等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#基础知识之字符串和正则表达式 - Python技术站