循环播放时文本会更多地向右移动

循环播放时文本会更多地向右移动

这是我创建一个带有 for 循环的函数时的输出:

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   

您会看到,当 10 出现时,它将 System.Int32 向右移动。如何在代码中更改它?这可能不仅仅与 Powershell 有关。

代码:

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    

答案1

您应该检查 PS 的格式 (-f)。可以在此处找到示例:http://www.computerperformance.co.uk/powershell/powershell_-f_format.htm

因此,对于高级格式化,可以使用以下模式: 格式 -F 喜欢

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

其中 x(和 y)是 -f 后面列出的值的位置。该值必须出现在放置 {...} 的文本中。xlength(和 ylength)是显示相应值的宽度。长度是可选的。

可以使用特定格式以这种方式重新定义当前问题:

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

此处,整数及其标题在 5 个字符长的字段中“右对齐”(数字通常如此)。

相关内容