C# 字符串(string)
                           
天天向上
发布: 2025-04-13 13:29:17

原创
577 人浏览过

本章节重点讲解 C# 字符串(string。内容涵盖字符串的声明、常用操作、不可变性、性能优化(如 StringBuilder)、多语言处理、正则表达式匹配等方面,适合从初学到进阶使用。


一、什么是字符串(string

  • C# 中的 stringSystem.String 类的别名,用于表示 Unicode 字符的序列。
  • 字符串是 不可变(immutable) 的:创建后不能更改其内容。

二、字符串的声明与初始化

string s1 = "Hello World";              // 直接赋值
string s2 = new string('x', 5);         // "xxxxx"
string s3 = string.Empty;               // 空字符串 ""

三、字符串常见操作

操作方法示例说明
Lengths.Length获取字符数
ToUpper()/ToLower()s.ToUpper()大/小写转换
Contains()s.Contains("lo")是否包含子串
StartsWith()s.StartsWith("He")是否以某字符串开头
EndsWith()s.EndsWith("ld")是否以某字符串结尾
IndexOf()s.IndexOf("l")查找索引位置
Substring()s.Substring(6)从索引开始截取字符串
Replace()s.Replace("World", "C#")替换字符串
Split()s.Split(' ')按字符分割
Trim()s.Trim()去除前后空白符
string.Join()string.Join(",", arr)拼接数组元素为字符串

四、字符串不可变性

string original = "hello";
string modified = original.Replace("h", "j");

Console.WriteLine(original); // "hello"
Console.WriteLine(modified); // "jello"

✅ 原始字符串未被改变,而是创建了新字符串。


五、性能优化:使用 StringBuilder

StringBuilder 提供可变的字符串对象,适合拼接大量字符串场景(如循环)。

using System.Text;

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++)
{
    sb.Append("Hello ");
}
Console.WriteLine(sb.ToString()); // Hello Hello Hello Hello Hello 

📘 官方文档:StringBuilder 类


六、字符串比较(区分大小写与忽略大小写)

string a = "Hello";
string b = "hello";

// 严格区分大小写
bool isEqual = a == b; // false

// 忽略大小写
bool isEqualIgnore = string.Equals(a, b, StringComparison.OrdinalIgnoreCase); // true

七、字符串格式化方式

1. 字符串插值(推荐)

string name = "Alice";
int age = 30;
string msg = $"Name: {name}, Age: {age}";

2. string.Format()

string msg = string.Format("Name: {0}, Age: {1}", name, age);

3. + 拼接(不推荐用于大量拼接)

string msg = "Name: " + name + ", Age: " + age;

八、正则表达式支持(Regex)

using System.Text.RegularExpressions;

string input = "Email: abc@example.com";
string pattern = @"\w+@\w+\.\w+";

Match match = Regex.Match(input, pattern);
if (match.Success)
{
    Console.WriteLine("Email found: " + match.Value);
}

📘 正则官方文档:
.NET Regex 文档


九、多语言支持与 Unicode

C# 的字符串是基于 Unicode 的,支持中日韩文、Emoji 等字符。

string emoji = "你好 😊";
Console.WriteLine(emoji.Length); // 表示 Unicode 字符数(注意可能不同于视觉长度)

十、字符串与字符数组转换

// 字符串 → 字符数组
char[] chars = "Hello".ToCharArray();

// 字符数组 → 字符串
string str = new string(chars);

十一、字符串实用工具方法

方法功能
string.IsNullOrEmpty(str)判断是否为 null 或空字符串
string.IsNullOrWhiteSpace()判断是否为 null、空或全空白
string.Compare()比较两个字符串

十二、官方参考文档


十三、最佳实践建议

建议原因
✅ 使用字符串插值代替拼接更安全、清晰
✅ 多次拼接用 StringBuilder避免大量中间字符串对象
❌ 避免使用 == 进行文化敏感比较使用 string.Equals(..., StringComparison) 更准确
✅ 使用 IsNullOrWhiteSpace 检查用户输入更健壮
✅ 正则表达式预编译(RegexOptions.Compiled)提高性能(如在循环中)

更多详细内容,请关注其他相关文章!

发表回复 0

Your email address will not be published. Required fields are marked *