在 C# 中,string(或 String)关键字是 System.String 类的别名,其中提供了定义字符串以及操作字符串的一系列方法。
1、声明和初始化字符串
我们可以使用以下方式来创建字符串:
- 为 String 类型的变量赋值一个字符串;
- 使用 String 类的构造函数;
- 使用字符串串联运算符
+
; - 通过检索属性或调用返回字符串的方法;
- 通过调用格式化方法将值或对象转换为其字符串表示形式;
// 使用字符串为字符串变量赋值
string name = "helloworld";
// 声明一个字符串并初始化
string str1 = "welcome:" + name;
Console.WriteLine("str1 的值为:" + str1);
// 使用 System.String.Empty 定义一个空字符串
string str2 = System.String.Empty;
Console.WriteLine("str2 的值为:" + str2);
// 使用 System.String 类
System.String url = "http://www.baidu.com";
Console.WriteLine("url 的值为:" + url);
// 在局部变量中(即在方法体中)可以使用 var 来代替具体数据类型来定义变量
var temp = "C#教程";
Console.WriteLine("temp 的值为:" + temp);
// 定义一个常量字符串
const string str3 = "这是一个常量字符串";
Console.WriteLine("str3 的值为:" + str3);
// 使用字符串构造函数定义字符串
char[] letters = { 'H', 'e', 'l', 'l', 'o' };
String message = new String(letters);
Console.WriteLine("message 的值为:" + message);
2、String 类中的属性
String 类中提供了两个属性,如下表所示:
属性 | 描述 |
---|---|
Chars[Int32] | 获取指定字符在字符串中的位置 |
Length | 获取当前 String 对象中的字符数(字符串的长度) |
3、String 类中的方法
String 类中提供了许多用来操作字符串的方法,下表列举了 String 类中一些比较常用的方法:
方法 | 描述 |
---|---|
Clone() | 返回对此 String 实例的引用 |
Compare(String, String) | 比较两个指定的 String 对象,并返回一个指示二者在排序顺序中的相对位置的整数 |
CompareOrdinal(String, String) | 通过比较每个字符串中的字符,来比较两个字符串是否相等 |
CompareTo(String) | 将一个字符串与另一个字符串进行比较 |
Concat(String, String) | 连接两个指定的字符串 |
Contains(String) | 判断一个字符串中是否包含零一个字符串 |
Copy(String) | 将字符串的值复制一份,并赋值给另一个字符串 |
CopyTo(Int32, Char[], Int32, Int32) | 从字符串中复制指定数量的字符到一个字符数组中 |
EndsWith(String) | 用来判断字符串是否以指定的字符串结尾 |
Equals(String, String) | 判断两个字符串是否相等 |
Format(String, Object) | 将字符串格式化为指定的字符串表示形式 |
GetEnumerator() | 返回一个可以循环访问此字符串中的每个字符的对象 |
GetHashCode() | 返回该字符串的哈希代码 |
GetType() | 获取当前实例的类型 |
GetTypeCode() | 返回字符串的类型代码 |
IndexOf(String) | 返回字符在字符串中的首次出现的索引位置,索引从零开始 |
Insert(Int32, String) | 在字符串的指定位置插入另一个字符串,并返回新形成的字符串 |
Intern(String) | 返回指定字符串的内存地址 |
IsInterned(String) | 返回指定字符串的内存地址 |
IsNormalized() | 判断此字符串是否符合 Unicode 标准 |
IsNullOrEmpty(String) | 判断指定的字符串是否为空(null)或空字符串("") |
IsNullOrWhiteSpace(String) | 判断指定的字符串是否为 null、空或仅由空白字符组成 |
Join(String, String[]) | 串联字符串数组中的所有元素,并将每个元素使用指定的分隔符分隔开 |
LastIndexOf(Char) | 获取某个字符在字符串中最后一次出现的位置 |
LastIndexOfAny(Char[]) | 获取一个或多个字符在字符串中最后一次出现的位置 |
Normalize() | 返回一个新字符串,新字符串与原字符串的值相等,但其二进制表示形式符合 Unicode 标准 |
PadLeft(Int32) | 返回一个指定长度的新字符串,新字符串通过在原字符串左侧填充空格来达到指定的长度,从而实现右对齐 |
PadRight(Int32) | 返回一个指定长度的新字符串,新字符串通过在原字符串右侧填充空格来达到指定的长度,从而实现左对齐 |
Remove(Int32) | 返回一个指定长度的新字符串,将字符串中超出长度以外的部分全部删除 |
Replace(String, String) | 使用指定字符替换字符串中的某个字符,并返回新形成的字符串 |
Split(Char[]) | 按照某个分隔符将一个字符串拆分成一个字符串数组 |
StartsWith(String) | 判断字符串是否使用指定的字符串开头 |
Substring(Int32) | 从指定的位置截取字符串 |
ToCharArray() | 将字符串中的字符复制到 Unicode 字符数组 |
ToLower() | 将字符串中的字母转换为小写的形式 |
ToLowerInvariant() | 使用固定区域性的大小写规则将字符串转换为小写的形式 |
ToString() | 将其它数据类型转换为字符串类型 |
ToUpper() | 将字符串中的字母转换为大写形式 |
Trim() | 删除字符串首尾的空白字符 |
TrimEnd(Char[]) | 删除字符串尾部的空白字符 |
TrimStart(Char[]) | 删除字符串首部的空白字符 |
举例:
// 比较两个字符串是否相同:
string str1 = "http://www.baidu.com";
string str2 = "www.baidu.com";
if (String.Compare(str1, str2) == 0) {
Console.WriteLine(str1 + " 与 " + str2 + " 相同");
} else {
Console.WriteLine(str1 + " 与 " + str2 + " 不同");
}
// 判断一个字符串是否包含在另一个字符串中:
if (str1.Contains(str2)) {
Console.WriteLine(str1 + " 中包含 " + str2);
}else{
Console.WriteLine(str1 + " 中不包含 " + str2);
}
// 从一个字符串中截取指定长度的字符串:
string substr = str1.Substring(7);
// 将数组中的元素合并为字符串:
string[] strarray = new string[]{
"百度一下",
"http://www.baidu.com",
"C# 教程"
};
string str = String.Join(" ", strarray); // 百度一下 http://www.baidu.com C# 教程