与powershell有条件的字符串连接?

时间:2018-03-08 12:08:51

标签: string powershell concatenation concat

我正在处理一段代码,它根据各种信息组装一个字符串来识别一个对象。其中一些信息可能并不总是可用,我想知道是否有巧妙的方法使组装更容易?

作为示例,我们有构建最终标识符的$a$b$c。其中$b可能为空,最后一个字符串应包含由空格分隔的每个组件。一种选择是将$b的额外空间添加到字符串本身,如下所示:

$a = "FirstPart"
$b = " SecondPart"
$c = "FinalPart"
Write-Output "$a$b $c"
#FirstPart SecondPart FinalPart
$b = ""
Write-Output "$a$b $c"
#FirstPart FinalPart

另一种选择是有一个条件(可能变得相当复杂和冗长):

$a = "FirstPart"
$b = "SecondPart"
$c = "FinalPart"

if($b -eq ""){
    Write-Output "$a $c"
}else{
    Write-Output "$a $b $c"
    #FirstPart SecondPart FinalPart
}

$b = ""
if($b -eq ""){
    Write-Output "$a $c"
    #FirstPart FinalPart
}else{
    Write-Output "$a $b $c"
}

如果-join不为空,实际上非常需要使用-f$b来获取条件空间。有没有办法做到这一点,或者可能是另一种选择?如果($a,$b,$c) -join ' '为空,则$b会产生双倍空格。

1 个答案:

答案 0 :(得分:4)

$a = "FirstPart"
$b = "SecondPart"
$c = ""
$e = "last"

#put in array, and filter empty
$arr = ($a, $b, $c, $e) |  ? { $_ }

#print in space separed
Write-Output "$arr"