gpt4 book ai didi

powershell - PowerShell 中解析这些字符串的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 02:07:33 25 4
gpt4 key购买 nike

我将两个字符串传递到我的脚本中:

"Project1,Project2,Project3,Project4"
"web,batch,web,components"

这些字符串来自我们 DevOps 工具链中的一个工具,我无法控制输入格式。字符串 1 可以是任意数量的项目。字符串 2 将与字符串 1 中项目的“类型”具有相同数量的条目。

我需要为包含第一个字符串中的项目的第二个字符串中的每个不同类型发出一个字符串:
"Project1,Project3"
"Project2"
"Project4"

我知道我可以用一堆嵌套的 foreach 循环来做到这一点。有没有办法用哈希表和/或数组来做到这一点?

最佳答案

您可以使用 -split 将原始输入字符串转换为数组运算符(operator):

$ProjectNames = "Project1,Project2,Project3,Project4" -split ','
$ProjectTypes = "web,batch,web,components" -split ','

然后创建一个空的哈希表来包含类型到项目名称的映射
$ProjectsByType = @{}

最后遍历两个数组以按类型对项目名称进行分组:
for($i = 0; $i -lt $ProjectNames.Count; $i++){
if(-not $ProjectsByType.ContainsKey($ProjectTypes[$i])){
# Create key and entry as array if it doesn't already exist
$ProjectsByType[$ProjectTypes[$i]] = @()
}
# Add the project to the appropriate project type key
$ProjectsByType[$ProjectTypes[$i]] += $ProjectNames[$i]
}

现在您可以生成按项目类型分组的所需字符串:
$ProjectsByType.Keys |ForEach-Object {
$ProjectsByType[$_] -join ','
}

您还可以从两个数组创建对象并使用 Group-Object将它们分组:
$Projects = for($i = 0; $i -lt $ProjectNames.Count; $i++){
New-Object psobject -Property @{
Name = $ProjectNames[$i]
Type = $ProjectTypes[$i]
}
}

$Projects |Group-Object -Property Type

如果您想对项目进行进一步处理,这会更有趣,如果您只需要字符串,则第一种方法更容易

关于powershell - PowerShell 中解析这些字符串的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40721318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com