循环时,文本向右移动更多


0

这是我在下面创建一个带有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    

2
因为您正在输出标签。当你达到10额外的数字强制时,下一个标签停在右边。
DavidPostill

那怎么办呢?
Zrg 2016年

1
<耸肩>如果数字有两位数输出1个标签而不是2个标签?这是你的代码,你需要决定什么是可以接受的。
DavidPostill

什么@DavidPostill说。这个脚本的目的是什么?只是打印数字通常不是很有用,除非你刚开始编程(这不会让我错误,完全有效!)。如果您通过编写此脚本告诉我们您要解决的问题,或者您的最终目标是什么(请编辑您的帖子以执行此操作;请勿在评论中回复),那么我们可以建议更好的解决方案。这看起来很像XY问题
2016年

Answers:


0

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

因此,对于高级格式化,可以使用以下模式: format -f values like

"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个字符长的字段中对齐“右齐”(如图所示)。


鉴于OP似乎是PowerShell的初学者,你应该考虑提供一个实际上解决他的问题而不仅仅是一个链接的例子。
DavidPostill

我确实尊重你的评论,我很乐意举出例子,但我不会那样做(从不这样做)而不尝试所有的东西,但我没有手头的胜利。我会回来尝试可以检查Zrg是否直到这个问题,我们的感应工作。
GombaiSándor2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.