练习 - 了解 Split() 和 Join()
- 10 分钟
当你继续为一家物流公司进行开发工作时,你将开始构建一系列小型应用程序。 这些应用程序协同工作,从一个合作伙伴的系统获取数据,对其进行修改,然后以所需格式将其传递给内部系统。
若要执行数据转换,需要以字符串形式接受传入数据,将其解析为较小的数据元素,然后通过操纵使其匹配其他所需格式。 如何将字符串数据解析为较小的数据元素呢?
字符串数据类型的数组方法
string 类型的变量具有许多内置方法,可将单个字符串转换为较小字符串的数组,或转换为单个字符的数组。
当你处理来自其他计算机系统的数据时,有时它会以一种对你的意图没有帮助的方式进行格式设置或编码。 在这些情况下,请使用 string 数据类型的数组方法,将字符串解析为数组。
使用 ToCharArray() 以反向排列 string
删除或使用行注释运算符
//注释掉前面步骤中的所有代码。在 Visual Studio Code 编辑器中更新代码,如下所示:
string value = "abc123"; char[] valueArray = value.ToCharArray();
在此示例中,ToCharArray() 方法用于创建一个 char 的数组,其中数组的每个元素表示原始字符串的一个字符。
反向排列该字符数组中的元素,然后将其合并为新的字符串
接下来,将反转数组中的字符顺序,然后使用 Write 方法将它们合并回单个输出中。
在 Visual Studio Code 编辑器中更新代码,如下所示:
string value = "abc123"; char[] valueArray = value.ToCharArray(); Array.Reverse(valueArray); string result = new string(valueArray); Console.WriteLine(result);表达式
new string(valueArray)会新建System.String类的空实例(与 C# 中的string数据类型相同),并以构造函数的形式传入字符数组。备注
什么是
new关键字?System.String类与 C# 中string数据类型有什么关系? 什么是构造函数? 这些都是很好的问题,但很遗憾,他们都超出了此模块内容。 建议继续了解 .NET 类库以及 C# 中的类和对象,以便充分了解这种代码表现的内在原理。 目前,当你确定要执行转换但不确定如何使用 C# 来执行此操作,或有类似情况时,使用搜索引擎和 Microsoft 文档查找可供参考的典型示例。在 Visual Studio Code 的“文件”菜单上,选择“保存”。
在生成或运行代码之前,必须保存 Program.cs 文件。
在“资源管理器”面板中,若要在 TestProject 文件夹位置打开终端,请右键单击“TestProject”,然后选择“在集成终端中打开”。
终端面板应打开,并应包含一个命令提示符,显示终端已打开转到 TestProject 文件夹位置。
在终端命令提示符处,若要运行代码,请键入 dotnet run,然后按 Enter。
备注
如果看到一条指示“找不到要运行的项目”的消息,请确保终端命令提示符显示预期的 TestProject 文件夹位置。 例如:
C:\Users\someuser\Desktop\csharpprojects\TestProject>应会看到以下输出:
321cba
使用 Join(),将所有字符合并为新的逗号分隔值字符串
在某些情况下,可能需要使用逗号分隔字符数组的每个元素,这是处理表示为 ASCII 文本的数据时的常见做法。 为此,注释掉在步骤 2 中添加的代码行,并使用 String 类的 Join() 方法,传入要用于分段的字符(逗号)和数组本身。
在 Visual Studio Code 编辑器中更新代码,如下所示:
string value = "abc123"; char[] valueArray = value.ToCharArray(); Array.Reverse(valueArray); // string result = new string(valueArray); string result = String.Join(",", valueArray); Console.WriteLine(result);保存代码文件,然后使用 Visual Studio Code 运行代码。
应会看到以下输出:
3,2,1,c,b,a
对逗号分隔值字符串执行 Split() 操作,以拆分为字符串数组
为了完成代码,将使用 Split() 方法。 此方法适用于类型 string 的变量,并会创建字符串数组。
使用 Visual Studio Code 编辑器在文件底部添加以下代码行:
string[] items = result.Split(','); foreach (string item in items) { Console.WriteLine(item); }花点时间查看之前的代码。
逗号作为分隔符提供给
.Split(),将一个长字符串拆分为较小字符串。 然后,代码使用foreach循环来循环访问新创建的字符串数组items的每个元素。检查代码现在是否如下所示:
string value = "abc123"; char[] valueArray = value.ToCharArray(); Array.Reverse(valueArray); // string result = new string(valueArray); string result = String.Join(",", valueArray); Console.WriteLine(result); string[] items = result.Split(','); foreach (string item in items) { Console.WriteLine(item); }保存代码文件,然后使用 Visual Studio Code 运行代码。
运行代码时,你会看到以下输出:
3,2,1,c,b,a 3 2 1 c b a使用
items创建的string[] items = result.Split(',');数组用于foreach循环且显示string变量中包含的原始value中的各个字符。
概括
处理字符串和数组时,应谨记以下要点:
- 若要创建数组,使用
ToCharArray()和Split()等方法 - 若要将数组转换回单个字符串,使用
Join()等方法,或创建传入char数组的新字符串