O texto move-se mais para a direita ao fazer loop

0

Esta é a minha saída abaixo ao criar uma função com um loop for dentro dela:

NO      Type
--      ----

 1       System.Int32 
 2       System.Int32 
 3       System.Int32 
 4       System.Int32 
 5       System.Int32 
 6       System.Int32 
 7       System.Int32 
 8       System.Int32 
 9       System.Int32 
 10          System.Int32   

Você vê que quando 10 vem, ele move o System.Int32 mais para a direita. Como eu mudo isso dentro do meu código? Isso provavelmente não está relacionado apenas a Powershell.

Código:

function CountTen() {
    [array]$ListOfNumbers = @()
    [array]$NumbersType = @()

    for ($i=1; $i -le 10; $i++) {
        $ListOfNumbers += ("'n", $i, "'t't", ($i.GetType()))
    }

    Write-Host "NO't'tType"
    Write-Host "--'t't----"
    Write-Host $ListOfNumbers, "'t't", $NumbersType
}

CountTen    
    
por Zrg 17.03.2016 / 15:13

1 resposta

0

Você deve verificar a formatação (-f) do PS. Uma amostra pode ser encontrada aqui: link

Portanto, para formatação avançada, o seguinte padrão pode ser usado: formato -f valores como

"text {x,xlength} text {y,ylength} text" -f xvalue, yvalue

em que x (e y) são a posição do valor listado atrás de -f. Esse valor deve aparecer no texto onde {...} é colocado. xlength (e ylength) é a largura com a qual o valor apropriado será exibido. Comprimentos são opcionais.

O problema atual pode ser redefinido dessa forma usando formatação específica:

function CountTen() {
    $format = "{0,5} {1}"
    [array]$ListOfNumbers = @()
    [array]$NumbersType = @()

    $format -f "NO", "Type"
    $format -f "--", "----"

    for ($i=1; $i -le 10; $i++) {
        $format -f $i, $i.GetType()       
    }
}

CountTen

Aqui, os inteiros e seus cabeçalhos são alinhados com "flush right" (como as figuras geralmente são) em um campo de 5 caracteres.

    
por 17.03.2016 / 15:44