如何在PowerShell代码输出中对齐冒号前的空格?
如何在PowerShell代码输出中对齐冒号前的空格?
要实现冒号对齐的效果,核心思路是先确定手机型号里最长的字符串长度,然后统一每个型号的显示宽度,用空格填充不足的部分。这里给你两种可行的实现方式:
方法一:使用for循环配合格式化字符串
$Phones = @('iPhone 12', 'Samsung S5', 'Nokia 7') $Manufs = @('US', 'South Korea', 'Finlandia') # 获取最长手机型号的字符长度 $maxLength = ($Phones | Measure-Object -Property Length -Maximum).Maximum for ($i = 0; $i -lt $Phones.Count; $i++) { # 左对齐填充至maxLength长度,确保冒号位置统一 "{0,-$maxLength} : {1}" -f $Phones[$i], $Manufs[$i] }
方法二:使用ForEach-Object带索引处理
如果你更习惯管道式的写法,也可以这样实现:
$Phones = @('iPhone 12', 'Samsung S5', 'Nokia 7') $Manufs = @('US', 'South Korea', 'Finlandia') $maxLength = ($Phones | Measure-Object Length -Maximum).Maximum $Phones | ForEach-Object -Begin { $index = 0 } -Process { "{0,-$maxLength} : {1}" -f $_, $Manufs[$index++] }
两种方法都会输出你想要的对齐效果:
iPhone 12 : US Samsung S5 : South Korea Nokia 7 : Finlandia
简单解释下关键逻辑:
Measure-Object -Property Length -Maximum用来找出所有手机型号里最长的那个的字符数,确定统一的宽度。- 格式化字符串里的
{0,-$maxLength}表示把第一个参数(手机型号)左对齐,占用$maxLength个字符宽度,长度不够的地方自动用空格填充,这样所有冒号就会整齐地排在同一列了。
备注:内容来源于stack exchange,提问作者Mr.Key7
相关产品推荐
相关产品推荐

