无分隔符连接数组元素
使用-join
操作符...
$array -join ''
...或者使用静态String.Join
方法...
[String]::Join('', $array)
可以使用静态的String.Concat
方法...
[String]::Concat($array)
对于以上所有情况,结果将是一个新的
[String]
实例,其中每个元素都连接在一起。
修复
for
循环
您的
for
循环会逐个输出
$array
中的每个元素,这将分别呈现在不同的行上。要解决此问题,您可以使用
Write-Host
向控制台写入内容,并传递
-NoNewline
使得每次迭代的输出都在同一行上...
for ($i = 0; $i -lt $array.Length; $i++)
{
Write-Host -NoNewline $array[$i]
}
Write-Host
在输出最后一个数组元素后,额外调用Write-Host
会移到新行。
如果不是控制台输出而是想要一个新的[String]
实例,则可以在循环中自己连接这些元素...
$result = ''
for ($i = 0; $i -lt $array.Length; $i++)
{
$result += $array[$i]
}
+=
操作符会在循环的每次迭代中为非 $null
且非空的 $array[$i]
创建一个新的中间 [String]
实例,因此使用 [StringBuilder]
更加高效,特别是当 $array.Length
很大时...
$initialCapacity = [Int32] ($array | Measure-Object -Property 'Length' -Sum).Sum
$resultBuilder = New-Object -TypeName 'System.Text.StringBuilder' -ArgumentList $initialCapacity
for ($i = 0; $i -lt $array.Length; $i++)
{
$resultBuilder.Append($array[$i]) | Out-Null
}
$result = $resultBuilder.ToString()
join
没有成功。 - user1627901-join $array
和[string]$srray
,但是使用[string]$array
会在元素之间产生空格。 - user1627901-join ','
可以将数组以CSV格式检索出来。对于带引号的CSV:$inner = $tokens -join '","'; $output = """$inner"""; $output
- Underverse