代码之家  ›  专栏  ›  技术社区  ›  techguy1029

如何使一系列数字只打印为两位数?

  •  1
  • techguy1029  · 技术社区  · 7 年前

    我需要能够把一系列的数字打印成两位数。例如, 01,02,03,04...10,11 .

    https://forums.overclockers.co.uk/threads/powershell-convert-1-digit-number-to-2-digit-number.18279138/

    这是我正在尝试的脚本:

    # Define a range's upper bound dynamically (IRL via user input)
    $upperBound = 18
    
    # Create an array of numbers (indices).
    1..$upperBound
    

    我尝试使用“0:d2”作为上述站点,但我得到一个错误“无法转换值”:

    1.."{0:D2}" -f $upperBound
    

    我也试过这个;

    "{0:D2}" -f $upperBound
    

    但是,这只显示输入的一个数字,而不是整个范围。例如,如果我输入2,我将得到02。我想显示01,02。

    除此之外,我希望此范围显示在服务器名称旁边。我有一个服务器列表,这个范围必须附加到服务器名上。例子:

    server01
    server02
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   mklement0    7 年前

    测距仪( .. )仅对操作 数字 作为终结点;为了格式化生成的数字数组,必须应用 后处理 在数组的元素上 :

    注意:下面的示例输出假定 $upperBound 具有一定的价值 3 .

    使用PSv4+语法:

    PS> (1..$upperBound).ForEach({ '{0:D2}' -f $_ })
    01
    02
    03
    

    在PSV3-中,使用:

    foreach ($ndx in 1..$upperBound) { '{0:D2}' -f $ndx } # same output as above.
    

    要使格式化的“数字字符串”成为服务器名称的一部分,请执行以下操作:

    PS> (1..$upperBound).ForEach({ 'server{0:D2}' -f $_ })
    server01
    server02
    server03
    

    为了创建一个 列表 作为一个名字 带分隔符的单字符串 使用 -join 结果数组上的运算符:

    PS> (1..$upperBound).ForEach({ 'server{0:D2}' -f $_ }) -join ','
    server01,server02,server03
    

    在PSV3-中:

    $(foreach ($ndx in 1..$upperBound) { 'server{0:D2}' -f $ndx }) -join ','
    
        2
  •  0
  •   Robert Cotterman    7 年前
    $upperbound = 18
    $totalArray = 1..$upperbound | foreach {$_.tostring('00')}
    foreach ($server in (cat serverlist.txt)) {
        $totalarray | foreach {"$server$_"}
    }
    

    将00替换为您要0的位置

    0=1,2,3等。

    00=01、02、03等…

    000=001、002、003等。

    如果您想用逗号在一行中显示服务器数字,您可以这样做

    $totalArray -join ','
    
    推荐文章