2016-04-15 5 views
1

Я пытаюсь поместить итератор в цикл for, используя PowerShell, но получаю сообщение об ошибке.Заполнение итератора в цикле for

Нормальная обивка отлично работает:

$mytext = "Test" 
Write-Host $mytext.PadLeft(5, "0") 
# Output: 0Test 

Но с помощью итератора не работает:

for ($i=1; $i -lt 20; $i++) { 
    Write-Host $i.PadLeft(2, "0") 
} 

Метод вызова не удалось, потому что [System.Int32] не содержит метод с именем ' PadLeft.

Не даже если я копирую итератор в переменную перед прокладкой:

for ($i=1; $i -lt 20; $i++) { 
    $Iterator = $i 
    Write-Host $Iterator.PadLeft(2, "0") 
} 

Метод вызова не удалось, потому что [System.Int32] не содержит метод, названный «PadLeft».

Невозможно использовать PadLeft() в петле for?

ответ

2

Его потому, что $i является integer и, как говорится в сообщении об ошибке, он не содержит метода PadLeft. Во всяком случае, вы могли бы бросить integer в строку:

for ($i=1; $i -lt 20; $i++) { 
    $Iterator = [string]$i 
    Write-Host $Iterator.PadLeft(2, "0") 
} 
+0

Ого, я так глуп, спасибо ... Как-то я прочитал это как «System32» в сообщении об ошибке и неправильно все это. –

+0

'$ i.ToString ('00')' – PetSerAl

Смежные вопросы