在powershell中使用分隔符分割字符串

问题描述 投票:0回答:1

我有以下powershell脚本:

$hostNames = "10.130.68.77, 172.29.207.33, ###, gcsl-blg7v=10.130.68.77, ndtv23v0675=172.29.207.33"
$iplist = $hostNames.Split(', ###, ')[0]
$dnsiplist = $hostNames.Split(', ###, ')[1]

Write-Host "COMPLETE LIST: $hostNames"
Write-Host "IP LIST: $iplist"
Write-Host "DNS-IP LIST: $dnsiplist"

输出:

COMPLETE LIST: 10.130.68.77, 172.29.207.33, ###, gcsl-blg7v=10.130.68.77, ndtv23v0675=172.29.207.33
IP LIST: 10.130.68.77
DNS-IP LIST: 

我希望拆分“,###,”,以便我可以获得以下所需的输出:

COMPLETE LIST: 10.130.68.77, 172.29.207.33, ###, gcsl-blg7v=10.130.68.77, ndtv23v0675=172.29.207.33
IP LIST: 10.130.68.77, 172.29.207.33
DNS-IP LIST: gcsl-blg7v=10.130.68.77, ndtv23v0675=172.29.207.33

请让我知道我该怎么办?

powershell split substring delimiter
1个回答
0
投票

.Split
默认使用
public string[] Split(params char[] separator);
重载,在您的示例中,这意味着
', ###, '
首先转换为字符数组
[char[]] ', ###, '
并按每个字符进行分割。您需要帮助 PowerShell 使用正确的重载:
public string[] Split(string[] separator, StringSplitOptions options);
:

$hostNames = '10.130.68.77, 172.29.207.33, ###, gcsl-blg7v=10.130.68.77, ndtv23v0675=172.29.207.33'
$iplist, $dnsiplist = $hostNames.Split([string[]] ', ###, ', [System.StringSplitOptions]::None)

Write-Host "COMPLETE LIST: $hostNames"
Write-Host "IP LIST: $iplist"
Write-Host "DNS-IP LIST: $dnsiplist"

请注意,此问题仅发生在 Windows PowerShell (.NET Framework) 中,在 PowerShell 7+ 中

$hostNames.Split(', ###, ')
可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.