[英]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.