我正在尝试编写一些 PowerShell 代码,该代码采用后缀数组并构建一个新数组,其中输入的字符串以这些后缀为前缀。
我怎样才能像 C# 的 Map 或聚合代码那样基于原始列表构建一个新列表?
在下面的powershell中...
$workspaceName = "test"
$deleteableItemSuffixes = @("-api","-asp","-appi")
$deleteableItemNames = ???
例如,我希望结果数组["test-api", "test-asp", "test-appi"]
为 。
该-replace
运算符允许为字符串数组提供简洁有效的解决方案:
# Returns array @('test-api', 'test-asp', 'test-appi')
"-api", "-asp", "-appi" -replace '^', 'test'
-replace
是正则表达式基和接受数组作为输入,在这种情况下的操作在每个元件上进行。
^
匹配字符串,在该替换字符串,开始时的位置'test'
被插入前面加上该字符串的每个数组元素(相比之下,在效果$
相匹配的端部的每个字符串的并且可以被用于附加的值)。
对于其他数据类型,如果您需要更大的灵活性,您可以使用.ForEach()
数组方法(对于已经在内存中的集合,它比cmdlet更快):ForEach-Object
("-api", "-asp", "-appi").ForEach({ 'test' + $_ })
严格来说,.ForEach()
返回的不是 .NET array,而是 type 的集合[System.Collections.ObjectModel.Collection[psobject]]
,但在 PowerShell 中通常没有区别。
如果你确实需要一个实际的数组,你可以简单地施放的结果:
# Use the appropriate data type, or simply [array] for an [object[]] array.
[string[]] ("-api", "-asp", "-appi").ForEach({ 'test' + $_ })
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句