C# 字符串

在 C# 中,字符串是字符序列。例如,"hello" 是一个字符串,包含字符 'h''e''l''l''o' 的序列。

我们使用 string 关键字来创建字符串。例如:

// create a string
string str = "C# Programming";

在这里,我们创建了一个名为 strstring,并为其赋值了文本 "C# Programming"。我们在 C# 中使用双引号来表示字符串。


示例:在 C# 中创建字符串

using System;  
namespace CsharpString {  
  class Test {
    public static void Main(string [] args) {
      
// create string string str1 = "C# Programming"; string str2 = "Programiz";
// print string Console.WriteLine(str1); Console.WriteLine(str2); Console.ReadLine(); } } }

输出

C# Programming
Programiz

在上面的示例中,我们创建了两个名为 str1str2 的字符串并打印了它们。

注意:C# 中的字符串变量不是像 intchar 等这样的原始类型。相反,它是 String 类的一个对象。


字符串操作

C# 字符串提供了多种方法来执行不同的字符串操作。我们将介绍一些常用的字符串操作。

1. 获取字符串的长度

要查找字符串的长度,我们使用 Length 属性。例如:

using System;  
namespace CsharpString {  
  class Test {
    public static void Main(string [] args) {

      // create string
      string str = "C# Programming";
      Console.WriteLine("string: " + str);
      
// get length of str int length = str.Length;
Console.WriteLine("Length: "+ length); Console.ReadLine(); } } }

输出

string: C# Programming
Length: 14

在上面的示例中,Length 属性计算字符串中字符的总数并返回它。


2. 在 C# 中连接两个字符串

我们可以使用 Concat() 方法在 C# 中连接两个字符串。例如:

using System;  
namespace CsharpString {  
  class Test {
    public static void Main(string [] args) {

      // create string
      string str1 = "C# ";
      Console.WriteLine("string str1: " + str1);

      // create string
      string str2 = "Programming";
      Console.WriteLine("string str2: " + str2);
// join two strings string joinedString = string.Concat(str1, str2);
Console.WriteLine("Joined string: " + joinedString); Console.ReadLine(); } } }

输出

string str1: C#
string str2: Programming
Joined string: C# Programming

在上面的示例中,我们创建了两个名为 str1str2 的字符串。请注意以下语句:

string joinedString = string.Concat(str1, str2);

在这里,Concat() 方法连接 str1str2 并将其赋值给 joinedString 变量。

我们也可以使用 C# 中的 + 运算符连接两个字符串。要了解更多信息,请访问C# String Concat


3. C# 比较两个字符串

在 C# 中,我们可以使用 Equals() 方法来比较两个字符串。Equals() 方法检查两个字符串是否相等。例如:

using System;  
namespace CsharpString {  
  class Test {
    public static void Main(string [] args) {

      // create string
      string str1 = "C# Programming";
      string str2 = "C# Programming";
      string str3 = "Programiz";
      
// compare str1 and str2 Boolean result1 = str1.Equals(str2);
Console.WriteLine("string str1 and str2 are equal: " + result1);
//compare str1 and str3 Boolean result2 = str1.Equals(str3);
Console.WriteLine("string str1 and str3 are equal: " + result2); Console.ReadLine(); } } }

输出

string str1 and str2 are equal: True
string str1 and str3 are equal: False

在上面的示例中,我们创建了 3 个名为 str1str2str3 的字符串。在这里,我们使用 Equals() 方法来检查一个字符串是否等于另一个字符串。


字符串对象的不可变性

在 C# 中,字符串是不可变的。这意味着,一旦我们创建了一个字符串,我们就不能更改该字符串。

为了理解这一点,请看一个例子

// create string
string str = "Hello ";

在这里,我们创建了一个名为 str 的字符串变量。该变量保存字符串 "Hello "

现在假设我们要更改字符串 str

// add another string "World"
// to the previous string example
str = string.Concat(str, "World");

在这里,我们使用 Concat() 方法将字符串 "World" 添加到前面的字符串 str 中。

但是,当字符串不可变时,我们如何能够修改它呢?

让我们看看这里发生了什么:

  1. C# 获取字符串 "Hello " 的值。
  2. 通过将 "World" 添加到字符串 "Hello " 来创建一个新字符串。
  3. 创建一个新的字符串对象,为其赋值 "Hello World",并将其存储在 str 中。
  4. 最初分配给 str 的字符串 "Hello " 由于没有其他变量引用它而被释放以进行垃圾回收。

字符串转义序列

转义字符用于转义字符串中的某些字符。换句话说,我们使用转义序列在字符串中插入特殊字符。

假设我们需要在字符串中包含双引号。

// include double quote
string str = "This is the "String" class";

由于字符串由双引号表示,编译器会将 "This is the " 视为字符串。上面的代码将导致错误。

为了解决这个问题,我们在 C# 中使用转义字符 \"。例如:

// use the escape character
string str = "This is the \"String\" class.";

现在,通过在双引号 " 前面加上 \,我们可以将其包含在字符串中。

C# 中的一些转义序列如下:

转义序列 字符名称
\' 单引号
\" 双引号
\\ 反斜杠
\0 空字符
\n 换行符
\t 水平制表符

字符串插值

在 C# 中,我们可以使用字符串插值将变量插入到字符串中。对于字符串插值,字符串文字必须以 $ 字符开头。例如:

using System;  
namespace CsharpString {  
  class Test {
    public static void Main(string [] args) {

      // create string
      string name = "Programiz";

// string interpolation string message = $"Welcome to {name}";
Console.WriteLine(message); Console.ReadLine(); } } }

输出

Welcome to Programiz

在上面的示例中,我们在 message 字符串中使用 name 变量。

string message = $"Welcome to {name}";

请注意:

  • 字符串文字以 $ 开头
  • name 变量放在花括号 {}

C# 字符串方法

C# 中有各种字符串方法。其中一些如下:

方法 描述
Format() 返回一个格式化字符串
Split() 将字符串拆分成子字符串
Substring() 返回字符串的子字符串
Compare() 比较字符串对象
Replace() 将指定的旧字符替换为指定的字符
Contains() 检查字符串是否包含子字符串
Join() 使用指定的 Separator 连接给定的字符串
Trim() 删除任何前导和尾随的空格
EndsWith() 检查字符串是否以给定的字符串结尾
IndexOf() 返回字符串中指定字符的位置
Remove() 从字符串中返回字符
ToUpper() 将字符串转换为大写
ToLower() 将字符串转换为小写
PadLeft() 在左侧用空格或指定的 Unicode 字符填充字符串
PadRight()
在右侧用空格或指定的 Unicode 字符填充字符串
StartsWith() 检查字符串是否以给定的字符串开头
ToCharArray() 将字符串转换为 char 数组
LastIndexOf()
返回指定字符串最后一次出现的位置

常见问题

1. 如何在 C# 中创建字符串数组?

字符串数组的创建方式与数据类型数组的创建方式相同。例如:

using System;  
namespace CsharpString {  
  class Test {
    public static void Main(string [] args) {

// array of string type string[] animals = {"Monkey", "Dog", "Cat"};
// print array elements Console.WriteLine(animals[0]); Console.WriteLine(animals[1]); Console.WriteLine(animals[2]); Console.ReadLine(); } } }

输出

Monkey
Dog
Cat
2. C# 中 string 和 String 的区别

stringString 之间没有技术区别。在 C# 中,string 是 System.String 的别名。

建议使用 string,因为它即使没有 using System; 也能工作。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战