在C#
中,String
类型是一个非常常用的数据类型,用于表示文本数据。它是 System.String
类的一个实例,位于 System
命名空间中。以下是一些关于C#
中 String
类型的基本操作和特性:
String
字符串字面量
字符串可以通过双引号 "
来定义:
string greeting = "Hello, World!";
字符串连接
可以使用 +
运算符来连接字符串:
string firstName = "John";
string lastName = "Doe";
string fullName = firstName + " " + lastName; // "John Doe"
或者使用 String.Concat
方法:
string fullName = String.Concat(firstName, " ", lastName);
字符串是不可变的
C#
中的字符串是不可变的,这意味着一旦一个字符串被创建,它的内容就不能被改变。任何修改字符串的操作都会创建一个新的字符串实例。
string original = "Hello";
string modified = original.Substring(0, 5); // "Hello"
original = modified.ToUpper(); // "HELLO"
// original 被修改了,但 modified 保持不变
字符串比较
区分大小写:默认的字符串比较是区分大小写的。可以使用 ==
和 !=
运算符来比较两个字符串的值是否相等。
不区分大小写:使用 String.Compare
或 String.Equals
方法,并指定StringComparison.OrdinalIgnoreCase
。
string a = "hello";
string b = "Hello";
bool areEqual = a == b; // false
bool areEqualIgnoreCase =
String.Equals(a, b, StringComparison.OrdinalIgnoreCase); // true
字符串方法
String
类提供了许多有用的方法来操作字符串,例如:
Length
或Length
属性来获取字符串的长度。Substring
来获取字符串的一部分。IndexOf
来查找子字符串的位置。Replace
来替换字符串中的字符或子字符串。ToLower
和ToUpper
来转换字符串的大小写。Trim
来去除字符串两端的空白字符。
字符串插值
C# 6.0
引入了字符串插值功能,它允许你在字符串中直接插入变量:
string name = "Alice";
string message = $"Hello, {name}!";
字符串和字符数组
字符串可以转换为字符数组,反之亦然:
string text = "Sample";
char[] charArray = text.ToCharArray();
string fromCharArray = new String(charArray);
字符串格式化
- 字符串插值:使用
${}
或String.Format
。 - 复合格式:使用
String.Format
来格式化数字和其他类型。
string formatted = String.Format("The value is {0}.", 42);
// 或者使用字符串插值
string formatted = $"The value is {42}.";
空字符串和 null
空字符串(""
)与 null
字符串是不同的。空字符串是一个长度为0
的字符串,而 null
表示没有引用任何对象。
字符串的安全性
- 避免注入:在处理用户输入时,确保进行适当的清理和验证。
- 编码和解码:使用
System.Text.Encoding
类来处理字符串的编码和解码。
正则表达式
使用 System.Text.RegularExpressions.Regex
类:进行复杂的字符串匹配和替换。
注意
- 避免不必要的字符串连接:因为字符串是不可变的,频繁的连接操作会创建多个临时字符串对象。
- 使用
StringBuilder
:对于大量字符串操作,使用StringBuilder
来提高性能。StringBuilder
与String
使用相同。
使用StringBuilder
比使用+
运算符连接字符串要高效得多,因为它避免了在每次迭代中创建新的字符串对象。 StringBuilder
是线程安全的,但是Append
方法不是线程安全的。如果你在多线程环境中使用StringBuilder
,需要自己管理线程同步。
StringBuilder
的Capacity
属性可以设置其最大容量,但通常不需要手动设置,因为StringBuilder
会自动调整容量。
String.Format
String.Format
是 C#
中的一个非常有用的字符串方法,它允许你创建一个格式化的字符串,其中包含零个或多个占位符,这些占位符由后续参数的值替换。这个方法提供了一种灵活的方式来构建包含变量或表达式的字符串。
基本语法
String.Format(string format, object arg0 [, object arg1, ...])
参数
format
:一个字符串,包含零个或多个由花括号 {}
包围的占位符。这些占位符的形式可以是 {index[,alignment][:formatString]}
。
index
是参数的索引,从0
开始。
alignment
是可选的,表示占位符的宽度和对齐方式。
formatString
是可选的,表示格式信息,如数字格式、日期格式等。
arg0
到 argN
:是要插入到格式化字符串中的参数。
示例
下面是一些使用 String.Format
的示例:
基本使用
string name = "Alice";
int age = 30;
string message = String.Format("Hello, {0}. You are {1} years old.", name, age);
// message 的内容将是 "Hello, Alice. You are 30 years old."
使用索引
string message = String.Format("Hello, {1} and {0}.", "Alice", "Bob");
// message 的内容将是 "Hello, Bob and Alice."
指定对齐和宽度
string message = String.Format("Hello, {0,10}. You are {1,5} years old.", name, age);
// "Alice" 将右对齐并占据至少10个字符的宽度,"30" 将占据至少5个字符的宽度
使用格式字符串
DateTime date = DateTime.Now;
string formattedDate = String.Format("Today is {0:dddd, MMMM dd, yyyy}", date);
// 格式化日期,例如 "Today is Monday, April 03, 2023"
组合使用
string message = String.Format("Hello, {0}. Your balance is {1,10:C}.", name, 123456.78);
// "Alice" 后面跟着一个至少10个字符宽度的货币格式的余额
总结
String.Format
是一个非常强大的工具,可以用来创建具有复杂格式要求的字符串。它在需要将变量插入到字符串模板中时特别有用,例如在生成报告、日志消息或用户界面文本时。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » C# String
发表评论 取消回复