String Powershell.split和append,同时保持拆分格式

String Powershell.split和append,同时保持拆分格式,string,powershell,split,String,Powershell,Split,您好,我的问题是如何保持已运行.split的字符串的格式。我想要什么 $test="a.b.c.d.e" $test2="abc" #split test #append split to test2 #desired output abc a b c d e 我知道如果我对字符串执行拆分,例如 $test="a.b.c.d.e" $splittest=$test.split(".") $splittest #output a b c d e 但是,当我尝试将其设置为希望将上述拆分附加到字符

您好,我的问题是如何保持已运行.split的字符串的格式。我想要什么

$test="a.b.c.d.e"
$test2="abc"
#split test
#append split to test2
#desired output
abc
a
b
c
d
e
我知道如果我对字符串执行拆分,例如

$test="a.b.c.d.e"
$splittest=$test.split(".")
$splittest
#output
a
b
c
d
e
但是,当我尝试将其设置为希望将上述拆分附加到字符串时

$test2="abc"
$test2+$splittest
#output
abca b c d e

$splittest+$abc
#output
a
b
c
d
e
abc
是否有一种方法可以在保持此拆分格式的同时将拆分字符串附加到另一个字符串,或者我必须通过拆分字符串foreach循环并将其逐个附加到$test2字符串

foreach ($line in $splittest)
{
$test2="$($test2)`n$(splittest)"
}

我不想使用foreach方法,因为它似乎会减慢我正在编写的脚本的速度,该脚本要求在小端拆分和追加超过500k次文本。

您看到的是PowerShell的运算符重载解析的效果

当PowerShell看到
+
时,它需要确定
+
在给定上下文中是否表示总和(
1+1=2
)、串联(
1+1=“11”
)或添加(
1+1=[1,1]

它通过查看左侧参数的类型来实现,并尝试将右侧参数转换为所选运算符重载所期望的类型

当您按照需要的顺序使用
+
时,字符串值位于左侧,因此会导致字符串串联操作

有多种方法可以将字符串前置到现有数组:

# Convert scalar to array before +
$newarray = @($abc) + $splittest

# Flatten items inside an array subexpression
$newarray = @($abc;$splittest)
现在,您所要做的就是通过换行符连接字符串:

$newarray -join [System.Environment]::NewLine
或者,您可以将输出字段分隔符(
$OFS
)更改为换行符,并将其隐式连接:

$OFS = [System.Environment]::NewLine
"$newarray"
最后,您可以通过管道将数组传输到
输出字符串
,但这将为整个字符串添加一个尾随换行符:

@($abc;$splittest) |Out-String

$splittest+$abc
生成一个数组,
$abc+$splittest
生成一个字符串-您对哪个感兴趣?我想要一个字符串
@($test2;$splittest)-加入[Environment]::换行$test2+$splittest
谢谢,这可以正常工作并将所有内容保持为字符串