在 C# 中使用字符串

384 阅读4分钟

在 C# 中使用字符串

C# 中的字符串被定义为一个或多个用于表示文本值的字符。字符串由字母表中的任何字母、数字或特殊字符组成,包括#@!$%& 等。一个字符串可以包含一个字符或整个段落。在本 C# 编程教程中,我们将了解如何创建字符串、一些常见的字符串方法和字符串运算符。到本文结束时,开发人员将对如何处理字符串并在他们的应用程序中使用它们有一个深入的了解。

在我们开始之前,您应该有一个集成开发环境 (IDE)或代码编辑器,允许您在 .Net 或 C# 中安装代码。了解 C# 数据类型的基础知识也很有帮助。如果您需要复习,请查看这篇文章的配套文章:C# 数据类型。您也可以为初学者复习 C#

你如何在 C# 中创建字符串?

定义 C# 字符串文字非常简单。开发人员所需要做的就是为String数据类型赋值,如以下代码所示:

using System;
 
public class StringExamples
{
            	public static void Main()
            	{
                            	string example1 = "A";
                            	string example2 = "Banana";
                            	string example3 = "This is a string as well, demonstrating using numbers 123 and symbols @#$%!";
                            	
                            	Console.WriteLine(example1);
                            	Console.WriteLine(example2);
                            	Console.WriteLine(example3);
            	}
}
 

如果你运行上面的代码,你会得到如下结果:

A
Banana
This is a string as well, demonstrating using numbers 123 and symbols @#$%!
 

该代码通过创建三个分别名为example1example2example3 的字符串来工作。然后,我们将单个字符分配给example1,将一个单词分配给example2,并将包含数字和特殊字符的整个句子分配给example3。然后我们使用*ConsoleWriteLine()*函数打印出我们的三个字符串。

*Console.WriteLine()*是 C# 用来将对象(实际上是字符串)打印到用户屏幕或控制台的函数。它是您在 C# 应用程序中处理文本值时将使用的主要函数之一。

虽然显示文本和向屏幕输出文本是处理字符串的重要组成部分,但这只是您使用字符串数据的一种方式。在下一节中,我们将介绍一些可用于操作基于文本的数据和输入的其他函数。

在 C# 中使用转义字符

关于可以在字符串中包含哪些字符,有一个(或两个)例外。由于我们通过将字符串括在一组引号 (" ") 之间来声明或创建我们的字符串,因此我们不能将它们包含在字符串中是有道理的 - 这样做会混淆 C#,因为它不知道是哪组引号标记用于开始和结束字符串。

一种方法来解决这个问题,幸运的。我们可以在双引号之前使用转义字符或反斜杠 \ 符号,以确保 C# 将其视为普通字符,而不是字符串声明的开始或结束的能指。

尝试以下代码以更好地了解转义字符在 C# 中的工作方式:

using System;
 
public class EscapeExample
{
            	public static void Main()
            	{
                            	string exampleEscape = "The man said \"Hello\".";
                            	
                            	Console.WriteLine(exampleEscape);
                            	
            	}
}
 

这段代码的输出是:

The man said "Hello".
 

如果我们没有在每个双引号之前使用转义字符——这里用来表示某人所说的话——我们的程序将以以下错误结束:

Compilation error (line 7, col 41): ; expected
Compilation error (line 7, col 46): ; expected
Compilation error (line 7, col 41): The name 'Hello' does not exist in the current context
Compilation error (line 7, col 46): Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement
 

除了 \ 转义字符之外,C# 还提供了其他有助于格式化文本和字符串的特殊字符,包括:

  • \n:换行符转义以创建换行符。
  • \r : 回车
  • \t : Tab 创建一个选项卡
  • ' : 单引号字符的转义
  • \” : 字符串中双引号的转义
  • \u : Unicode 转义

以下是使用反斜杠转义符和 \t 制表符特殊字符在句子中插入制表符的示例:

using System;
 
public class EscapeExample
{
            	public static void Main()
            	{
                            	string exampleEscape = "The man said \"Hello\".";
                            	string exampleTab = "This \t is \t some \t tabs";
                            	
                            	Console.WriteLine(exampleEscape);
                            	Console.WriteLine(exampleTab);
            	}
}
 

在 IDE 或代码编辑器中运行此 C# 代码会产生以下输出:

The man said "Hello".
This  	is  	some      tabs
 

最后,您也可以转义反斜杠——例如,如果您需要表示文件路径,这非常有用。要转义反斜杠,只需在其前面使用另一个反斜杠即可。尝试以下代码以查看此实践的使用情况:

using System;
 
public class EscapeExample
{
            	public static void Main()
            	{
 
                            	string example3 = "The file is located at: \\home\\user\\documents";
 
                            	Console.WriteLine(example3);
 
            	}
}
 

该计划将导致:

The file is located at: \home\user\documents

如何在 Python 中的字符串上使用逐字标识符

在字符串中分配保留的特殊字符的另一种方法是完全绕过转义字符,因为如果您必须使用大量转义字符,它们会变得繁琐且容易出错。相反,您可以使用逐字标识符– 或*@符号。如果我们使用逐字标识符*代替转义字符,上面的代码示例将如下所示:

using System;
 
public class EscapeExample
{
            	public static void Main()
            	{
                            	string exampleEscape = @"The man said ""Hello"".";
                            	string example3 = @"The file is located at: \home\user\documents";
                            	
                            	Console.WriteLine(exampleEscape);
                            	Console.WriteLine(example3);
            	}
}
 

通过在要添加到字符串的值之前添加*@符号,我们强制 C# 将保留的特殊字符视为常规字符。请注意,当我们对带引号的文本使用逐字标识符时*,我们必须将带引号的文本周围的引号加倍,如example3字符串:

string exampleEscape = @"The man said ""Hello"".";

运行我们之前的代码示例将导致:

The man said "Hello".
The file is located at: \home\user\documents

逐字标识符可用于远远超过用于转义字符的替代品。我们还可以使用它来创建多行字符串。多行字符串是格式化的字符串,输出时将显示在多行上。使用逐字标识符创建多行字符串时,您可以按以下方式声明字符串:

using System;

namespace ExampleMultiline {

class MultiLineSample {

static void Main(string[] args) {
string multiExample = @"The man walked,
Blindly forward
Then bumped into a tree.";

Console.WriteLine(multiExample);
}
}
}

在您的代码编辑器或集成开发环境中运行它会导致:

The man walked,
     	Blindly forward
     	Then bumped into a tree.

关于逐字标识符的最后说明:它还可以用于转义某些保留关键字,包括forifpublic。但是,该主题超出了本文的范围。现在,请注意逐字标识符在 C# 中有许多用途

在 C# 中连接字符串和字符串连接

处理字符串时的一个常见功能是将一个或多个连接在一起。这称为串联。开发人员可以使用多种方法在 C# 中连接字符串,我们将在本节中介绍其中的一些方法。

字符串连接运算符或 + 运算符

第一种方法涉及使用 C# 字符串连接运算符 - 也称为*+*运算符。这是一个使用起来非常简单的运算符,如以下代码所示,该代码显示了如何在 C# 中使用连接器运算符连接字符串:

using System;
 
public class ConcatenationExample
{
            	public static void Main()
            	{
                                            	
                            	string firstName = "James";
                            	string lastName = "Payne";
                            	
                            	string fullName = "My name is " + firstName + " " + lastName;
                            	
                            	Console.WriteLine(fullName);
            	}
}
 

在此代码中,我们创建了两个单独的字符串:firstNamelastName。我们为每个人分配一个值,然后创建一个名为fullName的第三个字符串,我们为其分配一些“我的名字是”的值。然后我们附加或连接firstNamelastName 的附加值。这使得fullName的完整值等于“我的名字是詹姆斯佩恩”。当我们执行代码的最后一行时,我们会这样做,这是一个WriteLine语句,其目的是将fullName的值写入屏幕。当您在代码编辑器中运行此代码时,您会得到以下结果:

My name is James Payne

C# 字符串插值

在 C# 中连接字符串的另一种方法是使用字符串插值。此方法需要开发者在变量赋值的开头放置*$*符号,如下例所示:

using System;
 
public class ConcatenationExample2
{
            	public static void Main()
            	{
                                            	
                            	string firstName = "James";
                            	string lastName = "Payne";
 
                            	string fullName = $"{firstName} {lastName} is my name.";
                            	Console.WriteLine(fullName);
                            	
            	}
}
 

使用字符串插值是在 C# 中连接字符串的首选方法。这部分与将循环和字符串连接运算符一起使用时可能出现的问题有关,这可能会导致循环逻辑出现一些问题。

这段代码的结果是它将文本:“James Payne is my name”打印到屏幕上。

C# 中的 String.Concate 方法

C# 有一个专门用于连接字符串的方法*——string.concate*方法。它可以将字符串、字符串对象和字符串数组或这些类型的组合连接成一个字符串。这是它在代码中的样子:

using System;
 
public class ConcatenationExample3
{
            	public static void Main()
            	{
                                            	
                            	string firstName = "James";
                            	string lastName = "Payne";
            	
                            	string fullName = string.Concat(firstName, lastName);
                            	Console.WriteLine(fullName);
                            	
            	}
}

在 C# IDE 中运行此代码将输出:“JamesPayne”。请注意两个连接的字符串之间缺少空格。如果您选择使用string.Concat方法,则需要在您的程序中考虑到这一点

C#中将字符串转换为大写

有时,开发人员需要将字符串的大小写从大写转换为小写,反之亦然。这有很多原因:用于表单验证,使处理数据更容易,等等。C# 有几个内置方法可以帮助更改字符串的大小写。我们将在本节中介绍其中的两个。

要将整个字符串转换为大写,我们使用 C# *String.ToUpper()*方法。以下是一些示例代码,显示了它的实际效果:

using System;
 
public class UpperExample
{
            	public static void Main()
            	{
                                            	
                            	string fullName = "James Payne";
                            	
                            	Console.WriteLine(fullName);
                            	string upperMyName = fullName.ToUpper();  
                            	Console.WriteLine(upperMyName);
 
            	}
}

在本例中,我们首先创建一个名为fullName的变量并为其赋值。接下来,我们使用Console.WriteLine()将“James Payne”写入屏幕。我们这样做是为了显示fullName的当前情况,它是上限和下限的混合。接下来,我们创建一个名为upperMyName的新变量并将其赋值为fullName。在分配之前,ToUpper()方法被应用于fullName的值,这会导致文本变为大写。最后,我们将upperMyName的值写入屏幕以显示该值确实变成了大写。在您的 IDE 中运行此程序的结果将是:

James Payne
JAMES PAYNE

我们还可以在打印语句中直接将变量转换为大写,如下例所示:

using System;
 
public class UpperExample2
{
            	public static void Main()
            	{
                                            	
                            	string fullName = "James Payne";
                            	
                            	Console.WriteLine(fullName);
                            	Console.WriteLine(fullName.ToUpper()); 
                            	Console.WriteLine(fullName);
 
            	}
}

当我们运行这段代码时,我们看到变量fullName开始时是大写和小写文本的混合。然后我们在打印语句中使用ToUpper()函数将文本转换为单个实例的全部大写。这意味着我们的字符串实际上并没有改变,而是创建了它的一个实例。这在下一行代码中展示,它再次打印fullName的值,这表明该值仍然是大写和小写字母的混合。下面是运行这段代码的结果:

James Payne
JAMES PAYNE
James Payne

C# 字符串转小写

在 C# 中将字符串转换为小写与将它们转换为大写的工作方式相同,不同之处在于开发人员必须使用String.ToLower()方法而不是String.ToUpper方法。以下是 C# 中小写字符串转换的示例:

using System;
 
public class LowerExample
{
            	public static void Main()
            	{
                                            	
                            	string fullName = "James Payne";
                            	
                            	Console.WriteLine(fullName);
                            	string upperMyName = fullName.ToLower();  
                            	Console.WriteLine(upperMyName);
 
            	}
}

同样,我们也可以通过将*ToLower()*应用于打印语句来直接将字符串转换为小写:

using System;
 
public class LowerExample2
{
            	public static void Main()
            	{
                                            	
                            	string fullName = "James Payne";
                            	
                            	Console.WriteLine(fullName);
                            	Console.WriteLine(fullName.ToLower()); 
                            	Console.WriteLine(fullName);
 
            	}
}

C# 和 .Net 中的字符串方法和函数

当谈到在 C# 和 .Net 中处理字符串的方式时,我们只是触及了表面。在接下来的几周内,我们将继续研究其他 C# 字符串方法和函数,这些方法和函数可让开发人员处理基于文本的数据和字符串数据类型,因此请务必经常查看更多 C# 编程教程。