HOWTO · PowerShell

在 PowerShell 中将字符串拆分为单独的变量

本教程将介绍在 PowerShell 中将字符串拆分为单独的变量。

本页内容

要在 PowerShell 中将字符串的各部分赋给不同变量,请先将字符串拆分为数组,再将所需元素赋值给变量。对于字面分隔符,使用 String.Split() 方法;如果分隔符应是正则表达式,则使用 -split 运算符。

下面的示例展示每种赋值方式得到的值。

使用 String.Split() 方法拆分字符串

String.Split() 是字符串的方法。如果不传入分隔符参数,它会在空白字符处分割文本。返回值是数组,因此可以通过索引将其中的部分赋给命名变量。第一个元素的索引为 0。

运行以下示例:

本节中的代码以及显示的标签或输出仍为英文。

$text = "Hello World"
$parts = $text.Split()
$first = $parts[0]
$second = $parts[1]
$first
$second

$record = "North|East|West"
$limitedParts = $record.Split([char[]]@('|'), 2)
$region = $limitedParts[0]
$remaining = $limitedParts[1]
$region
$remaining

第一组变量分别得到 Hello 和 World。接收字符数组和计数值的重载允许你指定字面分隔符,并限制返回部分的数量。在第二个示例中,竖线是分隔符,计数值为二,因此 $region 会得到第一个竖线之前的文本,而 $remaining 会得到其后的全部文本,包括后续竖线。返回的各部分中不包含分隔符。

如果要按多个字面字符中的任意一个拆分,可以传入字符数组。例如,Split([char[]]@(',', ';')) 会将逗号或分号视为分隔符。如果连续分隔符会影响数据处理,请检查所选重载对相邻部分的处理方式;必要时显式选择 StringSplitOptions 值。当分隔符是字面字符,且你需要使用 .NET 重载提供的分隔符、选项或最大部分数设置时,这个方法很有用。

使用 -split 运算符拆分字符串

-split 运算符是一种简洁的替代方式,它使用正则表达式作为分隔符。这样便于按某种模式拆分,例如一个或多个空白字符(\s+),或一组字符中的任意一个。与该方法一样,运算结果是数组,可以赋给不同变量。可选的限制值控制最多拆分出的部分数;达到允许的最后一次拆分后,剩余文本会保留在最后一部分中。

运行以下示例:

本节中的代码以及显示的标签或输出仍为英文。

$fruitLine = "apple,banana;cherry|date"
$firstFruit, $remainingFruit = $fruitLine -split '[,;|]', 2
$firstFruit
$remainingFruit

这里的字符类 [,;|] 会匹配逗号、分号或竖线。拆分计数为二,因此第一个变量得到 apple,第二个变量得到 banana;cherry|date。与 String.Split() 不同,-split 会将分隔符解释为正则表达式;如果要按字面匹配正则表达式元字符,请对它们进行转义。

如果需要测试字符串是否符合某个模式,或捕获匹配组,请使用 -match。它不会在分隔符匹配处拆分字符串;这项任务应使用 -split。对于字面分隔符和特定重载选项,选择 String.Split();对于正则表达式分隔模式,选择 -split。无论使用哪种方式,如果后续命令需要单独处理各个值,就将返回数组中的元素赋给命名变量。