PowerShell:如何将随机选取的数组元素中单个元素随机转大写?
解决PowerShell随机转单个元素大写的问题
你之前的写法是先把整个数组转成大写再随机选元素,自然两个结果都是大写。要实现只转选中的两个元素里的一个,得先选出随机元素,再单独挑其中一个转大写,给你两种简单的实现方式:
方法一:指定索引转大写
先随机选出2个元素,再随机生成0或1的索引(对应两个元素的位置),把该索引的元素转大写:
$array1 = @("Car", "House", "Computer", "Phone") # 随机获取2个元素 $selected = $array1 | Get-Random -Count 2 # 随机选要转大写的元素位置(0或1) $targetIndex = Get-Random -Min 0 -Max 2 # 对目标元素转大写 $selected[$targetIndex] = $selected[$targetIndex].ToUpper() Write-Host $selected
方法二:遍历标记转大写
先标记两个元素里的某一个需要转大写,再遍历处理:
$array1 = @("Car", "House", "Computer", "Phone") $selected = $array1 | Get-Random -Count 2 # 生成标记数组,确保只有一个元素需要转大写 $upperFlag = @($false, $false) $upperFlag[(Get-Random -Min 0 -Max 2)] = $true $result = $selected | ForEach-Object -Begin { $i = 0 } -Process { if ($upperFlag[$i++]) { $_.ToUpper() } else { $_ } } Write-Host $result
第一种方法更直接易懂,适合学习阶段的你,每次运行都会确保两个元素里恰好有一个是大写。
内容的提问来源于stack exchange,提问作者Xeryn
相关产品推荐
相关产品推荐

