Powershell
powershell 格式化一個已經是字元串的值
我有一些想要以特定方式格式化的值。非常清楚,它是一個 IP 地址八位字節,我希望它採用“xxx”格式。例如,如果我的八位字節值為“20”,我想將其顯示為“020”而不是“20”。
我最終將擁有一個充滿 IP 的數組,並且我想正確格式化所有這些。
這是一個我知道有效的例子,我已經弄清楚這是一個整數。
$Test = 1 $Test.ToString("000") 001
這不起作用。我通過 Get-Member 發現該值已經是一個字元串。
$Test = "1" $test.ToString("000") Cannot find an overload for "tostring" and the argument count: "1". At line:1 char:2 + $test.tostring("000") + ~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodException + FullyQualifiedErrorId : MethodCountCouldNotFindBest
關於如何獲取已經是字元串格式的值的任何想法,就像我可以使用整數值一樣?從長遠來看,我希望範例 $test 實際上包含完整的 IP 地址。
例如 10.10.10.10 我想成為 010.010.010.010
回答 給有興趣的人。通過使用@GregL 範例,我能夠為帶有前導零的完整 IP 格式組合一個工作範例,如下所示以供參考。
$Test = "10.10.10.10" $test2 = ($test.Split(".") | ForEach-Object {$_.tostring().padleft(3, '0')}) -join "."
大概您正在嘗試以這種方式格式化它們,以便它們都顯示得很好。
唯一的問題是 020 和 20 不一樣。反正不是這樣。
帶有 TCP/IP-32 和 Windows NT 實用程序的 Windows for Workgroups 可以接受由十進制、八進製或十六進制數字組成的 Internet 協議 (IP) 地址。如果您無意中在十進制八位字節中使用了前導零,這可能會導致混淆。使用前導零,這些實用程序將數字解析為八進制數,從而指定錯誤的 IP 地址。
文章說它只適用於 WINdows 2000 和 NT,但我只是在我的 Windows 7 PC 上嘗試過它,它是同樣的故事。
無論如何,要回答您最初的問題,請使用以下
PadLeft
方法:$Test = 1 $Test.ToString().PadLeft(3, '0') 001