PowerShell中如何使用', ###, '作为分隔符正确分割字符串?
PowerShell按指定完整字符串分割字符串的解决方案
你当前的脚本无法得到预期结果,核心原因是:PowerShell默认的Split()方法会将传入的字符串拆分为单个字符数组进行分割,而非按你指定的完整', ###, '字符串分割。
以下是两种可行的解决方法:
方案1:使用PowerShell -split 运算符(推荐)
-split 运算符支持直接按完整字符串分割,通过SimpleMatch参数可以避免正则表达式解析,精准匹配目标分隔符:
$hostNames = "10.130.68.77, 172.29.207.33, ###, gcsl-blg7v=10.130.68.77, ndtv23v0675=172.29.207.33" # 按完整分隔符分割字符串,获取两部分内容 $splitParts = $hostNames -split ', ###, ', 0, 'SimpleMatch' $iplist = $splitParts[0] $dnsiplist = $splitParts[1] Write-Host "COMPLETE LIST: $hostNames" Write-Host "IP LIST: $iplist" Write-Host "DNS-IP LIST: $dnsiplist"
方案2:使用.NET String.Split() 重载方法
通过传入字符串数组类型的分隔符,并指定StringSplitOptions.None,强制方法按完整字符串而非单个字符分割:
$hostNames = "10.130.68.77, 172.29.207.33, ###, gcsl-blg7v=10.130.68.77, ndtv23v0675=172.29.207.33" # 传入字符串数组作为分隔符,禁用默认字符分割逻辑 $splitParts = $hostNames.Split([string[]]', ###, ', [System.StringSplitOptions]::None) $iplist = $splitParts[0] $dnsiplist = $splitParts[1] Write-Host "COMPLETE LIST: $hostNames" Write-Host "IP LIST: $iplist" Write-Host "DNS-IP LIST: $dnsiplist"
原脚本失效的原因
你原脚本中$hostNames.Split(', ###, ')调用的是Split(char[])重载,它会把', ###, '拆分为单个字符(,, , #),然后按这些字符的任意组合分割字符串,自然得不到你想要的结果。
内容的提问来源于stack exchange,提问作者Ashar
相关产品推荐
相关产品推荐

