gpt4 book ai didi

powershell - 在 PowerShell 中使用分隔符连接部件的最佳方法

转载 作者:行者123 更新时间:2023-12-04 13:06:09 26 4
gpt4 key购买 nike

我需要将多个 Url 元素连接到一个字符串中,因此我编写了通用的 Join-Parts 函数:

filter Skip-Null { $_|?{ $_ } }

function Join-Parts
{
param
(
$Parts = $null,
$Separator = ''
)

[String]$s = ''
$Parts | Skip-Null | ForEach-Object {
$v = $_.ToString()
if ($s -ne '')
{
if (-not ($s.EndsWith($Separator)))
{
if (-not ($v.StartsWith($Separator)))
{
$s += $Separator
}
$s += $v
}
elseif ($v.StartsWith($Separator))
{
$s += $v.SubString($Separator.Length)
}
}
else
{
$s = $v
}
}
$s
}

Join-Parts -Separator '/' -Parts 'http://mysite','sub/subsub','/one/two/three'
Join-Parts -Separator '/' -Parts 'http://mysite',$null,'one/two/three'
Join-Parts -Separator '/' -Parts 'http://mysite','','/one/two/three'
Join-Parts -Separator '/' -Parts 'http://mysite/','',$null,'/one/two/three'
Join-Parts 1,2,'',3,4

按预期返回:
http://mysite/sub/subsub/one/two/three
http://mysite/one/two/three
http://mysite/one/two/three
http://mysite/one/two/three
1234

我感觉这不是最聪明的方法。关于更好方法的任何想法?

更新

根据@sorens 的回答,我将函数更改为:
function Join-Parts
{
param
(
$Parts = $null,
$Separator = ''
)

($Parts | ? { $_ } | % { ([string]$_).trim($Separator) } | ? { $_ } ) -join $Separator
}

最佳答案

你可以这样做:

($parts | foreach {$_.trim('/'))} -join '/'

关于powershell - 在 PowerShell 中使用分隔符连接部件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9593535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com