网站搜索

如何在 PowerShell 中将字符串拆分为变量?


在处理 PowerShell 自动化脚本时,我需要将字符串拆分为变量。我尝试了不同的方法。在此 PowerShell 脚本中,我将通过示例解释使用各种方法在 PowerShell 中将字符串拆分为变量的多种方法。

要在 PowerShell 中将字符串拆分为变量,您可以使用多种方法。 -split 运算符根据指定的分隔符将字符串拆分为数组,例如 $cities -split “, ” 用于逗号分隔值。 String 类的 Split 方法允许使用多个分隔符,例如 $info.Split(@(“|”, “, “))。对于更复杂的解析,ConvertFrom-String 可以将分隔字符串转换为具有命名属性的对象,并且使用 -match 的正则表达式可以将字符串的特定部分捕获到单独的变量中。

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

以下是使用不同示例在 PowerShell 中将字符串拆分为变量的各种方法。

1.使用-split运算符

-split 运算符是在 PowerShell 中将字符串拆分为变量的最简单方法之一。它根据您指定的分隔符将字符串拆分为数组。

以下是在 PowerShell 中将字符串拆分为变量的示例。

$cities = "New York, Los Angeles, Chicago, Houston, Phoenix"
$cityArray = $cities -split ", "
$city1 = $cityArray[0]
$city2 = $cityArray[1]
$city3 = $cityArray[2]
$city4 = $cityArray[3]
$city5 = $cityArray[4]

$city1, $city2, $city3, $city4, $city5

输出 :

New York
Los Angeles
Chicago
Houston
Phoenix

在此示例中,字符串在每个逗号后跟一个空格处分割并存储到变量中。

您可以在下面的屏幕截图中看到输出:

阅读如何在 PowerShell 中按单词拆分字符串?

2. 使用分割法

PowerShell 还允许您使用 String 类的 Split 方法来拆分字符串并将其存储到变量中。

这是一个例子。

$info = "John Doe|123 Main St|New York, NY|10001"
$delimiter = @("|", ", ")
$infoArray = $info.Split($delimiter, [System.StringSplitOptions]::None)
$name = $infoArray[0]
$address = $infoArray[1]
$city = $infoArray[2]
$state = $infoArray[3]
$zip = $infoArray[4]

$name, $address, $city, $state, $zip

使用 VS code 执行脚本后,您可以在下面的屏幕截图中看到输出。

3. 使用 ConvertFrom-String

ConvertFrom-String cmdlet 是在 PowerShell 中将字符串拆分为变量的另一种方法。

这是完整的代码:

$data = "Name: John Doe, Address: 123 Main St, City: New York, State: NY, Zip: 10001"
$parsedData = $data | ConvertFrom-String -PropertyNames 'Name', 'Address', 'City', 'State', 'Zip'
$name = $parsedData.Name
$address = $parsedData.Address
$city = $parsedData.City
$state = $parsedData.State
$zip = $parsedData.Zip

$name, $address, $city, $state, $zip

您可以在下面的屏幕截图中看到我使用 VS code 执行 PowerShell 脚本后的输出。

阅读如何在 PowerShell 中按换行符拆分字符串?

4. 将正则表达式与 -match 一起使用

下面是另一个示例,说明如何在 PowerShell 中使用带有 -match 的正则表达式将字符串拆分为变量。

这是一个完整的 PowerShell 脚本。

$address = "John Doe, 123 Main St, New York, NY 10001"
if ($address -match "^(.*), (.*), (.*), (.*) (\d+)$") {
    $name = $matches[1]
    $street = $matches[2]
    $city = $matches[3]
    $state = $matches[4]
    $zip = $matches[5]
}

$name, $street, $city, $state, $zip

我执行了上面的 PowerShell 脚本,您可以在下面的屏幕截图中看到输出:

结论

在本 PowerShell 教程中,我解释了如何使用各种方法在 PowerShell 中将字符串拆分为变量。我希望这有帮助。

相关文章