Powershell

powershell 格式化一個已經是字元串的值

  • March 23, 2015

我有一些想要以特定方式格式化的值。非常清楚,它是一個 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

引用自:https://serverfault.com/questions/676469