在 .net 中写入文件时的填充数

padding number when writing to file in .net

Powershell ISE 中的以下 .NET 脚本

$stream = [System.IO.StreamWriter] "t.txt"
$number = 1
1..500000 | % {
      $stream.Write("TEST_825A_")
      $stream.WriteLine($number)
$number +=1
}

$stream.close()

输出文本文件

TEST_825A_1

TEST_825A_2

TEST_825A_3

...

TEST_825A_500000

我需要用零填充到 8 位数字

TEST_825A_00000001

...

TEST_825A_00500000

这不是我什至接近母语的语言,谷歌搜索似乎也没有帮助。(或者我不明白如何实现答案)

有人可以帮我吗?

编辑:

工作代码

$stream = [System.IO.StreamWriter] "t.txt"
$number = 1
1..1000 | % {
      $stream.Write("TEST_825A_")
      $stream.WriteLine($number.ToString("00000000"))
$number += 1

}

$stream.close()

您可以使用带有格式掩码的 ToString:

$number = 1
$number.ToString("00000000")

给出00000001

我不希望这会大大改变运行时,但您也可以使用字符串 PadLeft() 方法。这可能较慢的特定原因是因为您需要先进行演员表。

$number = 5
([string]$number).PadLeft(8,"0")

不过,那行得通。

试试这个:

$Results = (1..500000) | % { "TEST_825A_$($_.ToString().PadLeft(8, "0"))" }
$Results -Join "`r`n" | Set-Content "t.txt"

这将对 HHD 执行 1 次写入,而不是多次写入。

我在 1000 上对其进行了采样..:[=​​13=]

Measure-Command {
  $Results = (1..1000) | % { "TEST_825A_$($_.ToString().PadLeft(8, "0"))" }
  $Results -Join "`r`n" | Set-Content "t1.txt"
}

总毫秒数:45.6615

Measure-Command {
  $stream = [System.IO.StreamWriter] "Y:\Desktop\t2.txt"
  $number = 1
  1..1000 | % {
    $stream.Write("TEST_825A_")
    $stream.WriteLine($number.ToString("00000000"))
    $number += 1
  }
  $stream.close()
}

总毫秒数:63.435