在PowerShell中将一个数组值放入字符串中。

9

我曾经很难理解在powershell中如何使用字符串值与数组配合。我想知道将数组放入字符串的正确语法。目前,这是我正在尝试的。方括号似乎被视为字符串的一部分而不是变量。

$array = @(2,3,5)

$string = " I have $array[2] apples"

这将输出 我有2个3个5[2]苹果


1
使用 $($array[2]),$() 会运行括号内的 PowerShell 命令。 - ArcSet
1
还有-f运算符;例如:"我有{0}个苹果" -f $array[2] - Bill_Stewart
1个回答

10

[2]被读作字符串。使用$($array[2])来将该部分作为powershell运行。

$array = @(2,3,5)

"I have $($array[2]) apples"

这将输出我有5个苹果

在评论中,您询问如何执行此操作的for循环。

在powershell中,您应该尽可能使用管道,管道命令是|

@(2,3,5) | foreach-object{
    "I have $_ apples"
}

谢谢!我在想这个是否也适用于$(array[$i]),其中$i是由for循环声明的变量。 - J. Tam
我在解决方案中回复了你的评论。 - ArcSet
我知道这已经很老了,但是那些性能影响可能是什么?我通常使用C#,但现在正在使用一些PowerShell,本来打算像往常一样使用for循环,但看到了这个答案并且想要使用上面的“PowerShell方式”和管道,但是接着我看到了这个评论,现在我不知道该用什么了。 - MostHated
@MostHated 当你使用Linq时,会有性能损失,因为它具有开销。这里有一个例子...如果我测量循环遍历1000个对象的数组所需的时间。ForEach-Object需要64毫秒,ForEach()需要16毫秒,而For()只需要2毫秒。 - ArcSet
啊,我明白了。虽然我应该意识到使用管道方法会变成Linq,但我没有意识到。现在我很高兴确信知道了这一点,所以谢谢。 - MostHated
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接