您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# C#字符串怎么使用
## 1. 字符串基础概念
### 1.1 什么是字符串
在C#中,字符串(`string`)是表示文本的字符序列,属于`System.String`类的别名。字符串在C#中是不可变的(immutable),这意味着一旦创建就不能修改。
```csharp
string greeting = "Hello, World!";
string s1 = "直接赋值";
char[] letters = { 'C', 'S', 'h', 'a', 'r', 'p' };
string s2 = new string(letters);
string name = "Alice";
int age = 25;
string info = $"姓名: {name}, 年龄: {age}";
+
运算符string fullName = firstName + " " + lastName;
Concat
方法string combined = string.Concat(str1, str2);
Join
方法string[] words = { "C#", "字符串", "教程" };
string sentence = string.Join(" ", words);
==
运算符bool equal = (str1 == str2); // 区分大小写
Equals
方法bool equal = str1.Equals(str2, StringComparison.OrdinalIgnoreCase);
方法 | 描述 |
---|---|
Ordinal |
二进制比较,最快 |
OrdinalIgnoreCase |
不区分大小写的二进制比较 |
CurrentCulture |
使用当前区域设置 |
InvariantCulture |
使用固定区域设置 |
Contains
方法bool hasSubstring = source.Contains("查找内容");
IndexOf
方法int position = source.IndexOf('a'); // 返回首次出现的位置
LastIndexOf
方法int lastPosition = source.LastIndexOf('a'); // 返回最后出现的位置
Substring
方法string sub1 = source.Substring(5); // 从位置5开始
string sub2 = source.Substring(0, 5); // 前5个字符
Replace
方法string newStr = original.Replace("旧", "新");
string upper = source.ToUpper();
string lower = source.ToLower();
string trimmed = source.Trim(); // 两端
string trimmedStart = source.TrimStart(); // 开头
string trimmedEnd = source.TrimEnd(); // 结尾
string result = string.Format("今天是{0:yyyy-MM-dd}, 温度{1}℃", DateTime.Now, 23.5);
// 货币格式
string money = string.Format("{0:C}", 123.456); // ¥123.46
// 小数位数
string num = string.Format("{0:F2}", 123.4567); // 123.46
string date = string.Format("{0:yyyy年MM月dd日}", DateTime.Now);
string[] parts = csvString.Split(',');
char[] delimiters = { ',', ';', '\t' };
string[] items = data.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
当需要频繁修改字符串时,使用StringBuilder
可以避免创建大量临时字符串,提高性能。
StringBuilder sb = new StringBuilder();
sb.Append("追加内容");
sb.AppendFormat("格式化{0}", 123);
sb.Insert(5, "插入内容");
sb.Replace("旧", "新");
string result = sb.ToString();
// 字符串转字节数组
byte[] utf8Bytes = Encoding.UTF8.GetBytes(text);
// 字节数组转字符串
string text = Encoding.UTF8.GetString(utf8Bytes);
bool isMatch = Regex.IsMatch(input, @"^\d+$"); // 是否全数字
MatchCollection matches = Regex.Matches(input, @"\b\w+\b");
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
string cleaned = Regex.Replace(input, @"\s+", " "); // 多个空格替换为单个
// 不好
for (int i = 0; i < 100; i++)
{
result += i.ToString();
}
// 推荐
var sb = new StringBuilder();
for (int i = 0; i < 100; i++)
{
sb.Append(i);
}
string result = sb.ToString();
string interned = string.Intern("重复使用的字符串");
// 文化敏感比较
bool equal = string.Equals(a, b, StringComparison.CurrentCulture);
// 不区分大小写的序号比较(性能更好)
bool equal = string.Equals(a, b, StringComparison.OrdinalIgnoreCase);
string json = """
{
"name": "张三",
"age": 30
}
""";
ReadOnlySpan<byte> utf8Bytes = "这是UTF-8文本"u8;
// 每次修改都会创建新对象
string s = "hello";
s += " world"; // 创建了新字符串
// 正确检查空字符串
if (string.IsNullOrEmpty(input)) { ... }
// 包括空白字符串检查
if (string.IsNullOrWhiteSpace(input)) { ... }
// 字符串转字符数组
char[] chars = str.ToCharArray();
// 字符数组转字符串
string newStr = new string(chars);
bool IsValidInput(string input)
{
return !string.IsNullOrWhiteSpace(input)
&& input.Length >= 6
&& input.Length <= 20;
}
string FormatLogMessage(string user, string action, DateTime time)
{
return $"[{time:yyyy-MM-dd HH:mm:ss}] 用户 '{user}' 执行了 '{action}'";
}
string[] ParseCsvLine(string line)
{
return line.Split(',')
.Select(s => s.Trim())
.Where(s => !string.IsNullOrEmpty(s))
.ToArray();
}
C#中的字符串处理功能丰富而强大,从基本的创建、比较到高级的正则表达式和格式化操作,开发者需要根据具体场景选择最合适的方法。理解字符串的不可变性特性对于编写高效代码至关重要,在需要频繁修改字符串的场景中,StringBuilder
是更好的选择。随着C#版本的更新,字符串功能也在不断进化,如C# 11引入的原始字符串字面量大大简化了多行字符串的处理。掌握这些字符串处理技巧将显著提升你的C#开发效率。
“`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。