如何将字符串数组映射到新的字符串数组?

瑞安

我正在尝试编写一些 PowerShell 代码,该代码采用后缀数组并构建一个新数组,其中输入的字符串以这些后缀为前缀。

我怎样才能像 C# 的 Map 或聚合代码那样基于原始列表构建一个新列表?

在下面的powershell中...

$workspaceName = "test"
$deleteableItemSuffixes = @("-api","-asp","-appi")
$deleteableItemNames = ???

例如,我希望结果数组["test-api", "test-asp", "test-appi"]为 。

克莱门特0

-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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章