Цикл Powershell с цифрами в алфавит

Мне нужна помощь в следующем: Создайте цикл for на основе условий, что индекс инициализируется равным 0, $test меньше 26 и индекс увеличивается на 1. Для каждой итерации печатайте текущую букву алфавита. Начните с буквы A. Таким образом, для каждой итерации в отдельной строке печатается одна буква. Я не могу увеличивать char каждый раз, когда цикл запускается

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

Я пробовал несколько попыток с попыткой увеличить char от 65 до 90 без успеха. Есть ли более простой способ увеличить алфавит, чтобы показать букву для каждого запущенного цикла?


person vnavna    schedule 08.09.2017    source источник
comment
0..25 | %{ [символ] ($_ + [байт][символ] 'A') }   -  person David Brabant    schedule 08.09.2017
comment
если все, что вам нужно, это диапазон заглавных букв, это сделает это ... [char[]]('A'[0]..'Z'[0]). [усмехнуться]   -  person Lee_Dailey    schedule 11.11.2018


Ответы (3)


Вы можете суммировать свой индекс цикла с 65. Таким образом, это будет: 0 + 65 = A, 1 + 65 = B ...

for ($test = 0; $test -lt 26; $test++)
{
    [char](65 + $test)
}
person Cassio Farias Machado    schedule 08.09.2017
comment
for ($test = 0; $test -lt 26; $test++) { $char = [char](65 +$test) Write-Host $char } Ваше предложение отлично сработало. Спасибо - person vnavna; 08.09.2017

PS2 to PS5:

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

Быстрее:

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

PS6+:

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

Быстрее:

('a'..'z').ForEach({ $_ })
person Daniel Ferreira    schedule 11.11.2018

В следующем примере не предполагается, что «A» равно 65, а также вы можете изменить его на любой желаемый начальный диск. Например, чтобы начать с «C» и перейти к «Z»:

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