【问题标题】:Powershell loop with numbers to alphabet带有数字到字母表的 Powershell 循环
【发布时间】:2018-02-16 23:00:11
【问题描述】:

我需要以下帮助: 根据索引初始化为0,$test小于26,索引加1的条件创建for循环 对于每次迭代,打印字母表的当前字母。从字母 A 开始。因此,对于每次迭代,单个字母都打印在单独的行上。 每次循环运行时我都无法增加 char

for ($test = 0; $test -lt 26; $test++)
{
[char]65
}

我尝试了多次尝试将 char 65 增加到 90,但均未成功。 有没有更简单的方法来增加字母表以显示每个运行的循环的字母?

【问题讨论】:

  • 0=A 1=B 2=C 3=D ....25=Z
  • 0..25 | %{ [char] ($_ + [byte][char] 'A') }
  • 如果你只想要大写字母的范围,这将做到...[char[]]('A'[0]..'Z'[0])。 [咧嘴]

标签: powershell increment alphabet


【解决方案1】:

您可以将循环索引与 65 相加。因此,它将是:0 + 65 = A,1 + 65 = B ...

for ($test = 0; $test -lt 26; $test++)
{
    [char](65 + $test)
}

【讨论】:

  • for ($test = 0; $test -lt 26; $test++) { $char = [char](65 +$test) Write-Host $char } 你的建议效果很好。谢谢
【解决方案2】:

PS2 到 PS5:

97..(97+25) | % { [char]$_ }

更快

(97..(97+25)).ForEach({ [char]$_ })

PS6+:

'a'..'z' | % { $_ }

更快

('a'..'z').ForEach({ $_ })

【讨论】:

    【解决方案3】:

    以下示例不假定“A”为 65,并且还允许您将其更改为您想要的任何起始驱动器。例如,从“C”开始并转到“Z”:

    $start = 'C'
    for ($next = 0; $next -lt (26 + [byte][char]'A' - [byte][char]$start); $next++) {
        [char]([byte][char]$start + $next)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-12
      • 2016-09-08
      • 1970-01-01
      • 2016-10-10
      • 2014-02-16
      • 2022-11-19
      相关资源
      最近更新 更多