簡體   English   中英

用前導 0 填充 IP 地址 - powershell

[英]Pad IP addresses with leading 0's - powershell

我正在尋找用 0 填充 IP 地址

例子
1.2.3.4 -> 001.002.003.004
50.51.52.53 -> 050.051.052.053

試過這個:

[string]$paddedIP = $IPvariable
[string]$paddedIP.PadLeft(3, '0')

也嘗試過拆分,但我是 powershell 的新手...

您可以使用.Split()-join的組合。

('1.2.3.4'.Split('.') | 
    ForEach-Object {$_.PadLeft(3,'0')}) -join '.'

使用這種方法,您一直在使用字符串。 Split('.')在每個. 特點。 .PadLeft(3,'0')確保 3 個字符在必要時帶有前導零。 -join '.' 將數組組合成一個字符串,每個元素用 . 分隔. .


您可以使用格式運算符-f采用類似的方法。

"{0:d3}.{1:d3}.{2:d3}.{3:d3}" -f ('1.2.3.4'.Split('.') |
    Foreach-Object { [int]$_ } )

:dN格式字符串允許使用前導零填充N (位數)。

這種方法創建一個字符串數組,就像在第一個解決方案中一樣。 然后每個元素被流水線化並轉換為[int] 最后,格式化應用於每個元素。

為了補充AdminOfThings 的有用答案,使用帶有腳本塊( {... } ) 的-replace運算符的更簡潔的替代方案,這需要 PowerShell Core (v6.1+):

PSCore> '1.2.3.50' -replace '\d+', { '{0:D3}' -f [int] $_.Value }

001.002.003.050

正則表達式\d+ (一個或多個數字)的每個匹配都會調用腳本塊,腳本塊內的$_指的是代表手頭匹配的System.Text.RegularExpressions.Match實例; 它的.Value屬性包含匹配的文本(字符串)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM