Split() 和 Join()

假设你就职于某系统集成商。你正在构建一系列小程序,这些程序将从一个合作伙伴的系统中获取数据,修改数据,然后将其以所需的格式传递到内部系统。

若要对数据执行此转换操作,需要以字符串形式接受传入数据,将其解析为较小的数据元素,然后通过操纵使其匹配其他格式。但如何将字符串数据解析为较小的数据元素呢?

字符串数据类型的数组方法

string 类型的变量具有许多内置方法,可将单个字符串转换为较小字符串的数组,或转换为单个字符的数组。

处理来自其他计算机系统的数据时,其格式或编码不一定符合你的需求。在这些情况下,可以使用 string 数据类型的 Array 方法,将较大的字符串解析为数组。

步骤 1 - 使用 ToCharArray() 反向编码字符串

string value = "abc123";
char[] valueArray = value.ToCharArray();

此处我们使用 ToCharArray() 方法来创建一个 char 数组。数组的每个元素都有一个字符的原始字符串。

步骤 2 - 反向排列该字符数组中的元素,然后将其合并为新的字符串

接下来,反向排列该数组中的字符,然后使用 Write 方法将其合并回单个输出:

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 数据类型相同),并以构造函数的形式传入 char 数组。

备注

new 关键字是什么? System.String 类与 C# 中 string 数据类型有什么关系?什么是构造函数?这些都是很好的问题,但很遗憾,他们都超出了此模块内容。建议继续了解 .NET 类库以及 C# 中的类和对象,以便充分了解这种代码表现的内在原理。目前,当你确定要执行转换但不确定如何使用 C# 来执行此操作,或有类似情况时,建议使用搜索引擎和 Microsoft Learn 查找可供参考的典型示例。

如果现在运行代码,将获得以下输出:

321cba

步骤 3 - 使用联接,将所有字符合并为新的逗号分隔值字符串

可能需要使用逗号来分隔字符数组的每个元素,这在处理表示为 ASCII 文本的数据时很常见。为此,注释掉在步骤 2 中添加的代码行,并使用 String 类的 Join() 方法,传入要用于分段的字符(逗号)和数组本身。你的代码应与以下列表一致:

string value = "abc123";
char[] valueArray = value.ToCharArray();
Array.Reverse(valueArray);
// string result = new string(valueArray);
string result = String.Join(",", valueArray);
Console.WriteLine(result);

运行代码时,应会看到以下输出:

3,2,1,c,b,a

步骤 4 - 将新的逗号分隔值字符串拆分为字符串数组

最后,使用可用于字符串类型变量的 Split() 方法来创建字符串数组。使用逗号作为分隔符,将一个长字符串拆分为较小字符串。最后,循环访问新字符串数组的每个元素。

string[] items = result.Split(',');
foreach (string item in items)
{
    Console.WriteLine(item);
}

在 .NET 编辑器中更新代码后,代码应与以下代码段相匹配:

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);
}

在运行代码时,将获得以下输出:

3,2,1,c,b,a
3
2
1
c
b
a

概括

处理字符串和数组时,应谨记以下事项: