在 .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
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