C#中的string类型是引用类型,专门用来存储和操作文本数据,在实际开发中应用频率非常高,掌握它的常用操作方法能有效提升开发效率。

string基础创建与初始化
string类型可以直接通过字面量赋值,也可以使用构造函数创建,实际开发中字面量赋值的方式更常用。
using System;
class Program
{
static void Main()
{
// 字面量赋值
string str1 = "hello world";
// 构造函数创建,传入字符数组
char[] charArr = { 'h', 'e', 'l', 'l', 'o' };
string str2 = new string(charArr);
Console.WriteLine(str1); // 输出 hello world
Console.WriteLine(str2); // 输出 hello
}
}
常用字符串操作方法
字符串拼接
拼接字符串有多种方式,最常用的是加号运算符和<string>类的Format方法,C#还提供了插值字符串的语法,使用起来更简洁。
using System;
class Program
{
static void Main()
{
string name = "张三";
int age = 20;
// 加号拼接
string str1 = "姓名:" + name + ",年龄:" + age;
// Format方法拼接
string str2 = string.Format("姓名:{0},年龄:{1}", name, age);
// 插值字符串拼接
string str3 = $"姓名:{name},年龄:{age}";
Console.WriteLine(str1);
Console.WriteLine(str2);
Console.WriteLine(str3);
}
}
字符串截取
使用<string>的Substring方法可以截取指定位置的字符串,第一个参数是起始索引,第二个参数是截取长度,索引从0开始。
using System;
class Program
{
static void Main()
{
string str = "C#字符串操作教程";
// 从索引0开始截取2个字符
string sub1 = str.Substring(0, 2);
// 从索引2开始截取到末尾
string sub2 = str.Substring(2);
Console.WriteLine(sub1); // 输出 C#
Console.WriteLine(sub2); // 输出 字符串操作教程
}
}
字符串替换
Replace方法可以将字符串中的指定字符或子串替换成新的内容,返回替换后的新字符串,原字符串不会改变。
using System;
class Program
{
static void Main()
{
string str = "hello java";
// 替换字符
string newStr1 = str.Replace('j', 'c');
// 替换子串
string newStr2 = str.Replace("java", "C#");
Console.WriteLine(newStr1); // 输出 hello cava
Console.WriteLine(newStr2); // 输出 hello C#
}
}
字符串分割
Split方法可以按照指定的分隔符将字符串分割成字符串数组,支持单个分隔符和多个分隔符。
using System;
class Program
{
static void Main()
{
string str = "apple,banana,orange,grape";
// 按照逗号分割
string[] fruits = str.Split(',');
foreach (string fruit in fruits)
{
Console.WriteLine(fruit);
}
// 输出 apple banana orange grape 每个占一行
}
}
字符串比较
比较两个字符串是否相等可以用Equals方法,也可以用==运算符,需要注意string是引用类型,但==运算符被重载为比较值是否相等。
using System;
class Program
{
static void Main()
{
string str1 = "test";
string str2 = "test";
// 使用Equals方法比较
bool isEqual1 = str1.Equals(str2);
// 使用==运算符比较
bool isEqual2 = str1 == str2;
Console.WriteLine(isEqual1); // 输出 True
Console.WriteLine(isEqual2); // 输出 True
}
}
string操作的注意事项
- string类型是 immutable 的,所有修改操作都会生成新的字符串对象,频繁修改字符串建议使用<StringBuilder>类型提升性能
- 判断字符串是否为空不要直接用=="",推荐使用<string>类的IsNullOrEmpty方法或者IsNullOrWhiteSpace方法,后者还会判断字符串是否只包含空白字符
- 字符串索引从0开始,使用Substring等方法时要注意索引范围,避免抛出索引越界异常
using System;
class Program
{
static void Main()
{
string str = null;
string str2 = " ";
// 判断是否为空或null
Console.WriteLine(string.IsNullOrEmpty(str)); // 输出 True
// 判断是否为空、null或空白字符
Console.WriteLine(string.IsNullOrWhiteSpace(str2)); // 输出 True
}
}