PowerShell中实现文本自动对齐并指定字符填充的方法
用指定字符为文本生成左右对称填充的上下行
需要根据指定填充字符,为不同长度的文本生成上下填充行,要求文本左右两侧的填充字符数量完全一致,示例变量与期望输出如下:
示例变量
$mychar = "#" $var1 = "Hello" $var2 = "...Long Title..." $var3 = "Some New Adventure" $var4 = "Some New Adventure EXCEED EXCEED EXCEED EXCEED EXCEED EXCEED EXCEED EXCEED EXCEED"
期望输出
########################################################################## ########################### Some New Adventure ########################### ########################################################################## ############################ ...Long Title... ############################ ########################################################################## ##################################### Hello ##################################### ########################################################################## ##################################### Some New Adventure EXCEED EXCEED EXCEED EXCEED EXCEED EXCEED EXCEED EXCEED EXCEED #####################################
(注:原期望输出中的?应为输入失误,统一按填充字符#处理)
实现方案(PowerShell)
以下脚本可自动计算左右填充字符数,保证对称,同时生成与中间行等长的上下填充行:
$mychar = "#" $vars = @( "Hello", "...Long Title...", "Some New Adventure", "Some New Adventure EXCEED EXCEED EXCEED EXCEED EXCEED EXCEED EXCEED EXCEED EXCEED" ) foreach ($text in $vars) { # 自定义中间行总长度,可根据需求调整 $totalLength = 80 $textLength = $text.Length # 计算左右填充字符数,减2是预留文本前后的空格 $padCount = [math]::Floor(($totalLength - $textLength - 2) / 2) $padStr = $mychar * $padCount # 生成中间行 $middleLine = "$padStr $text $padStr" # 补全总长度差值(处理奇数长度的情况) if ($middleLine.Length -lt $totalLength) { $middleLine += $mychar } # 生成上下填充行 $topBottomLine = $mychar * $middleLine.Length # 输出结果,空行分隔 Write-Host $topBottomLine Write-Host $middleLine Write-Host "" }
代码说明
- 可修改
$totalLength设置固定的中间行总长度,或改为动态计算所有文本的最大长度来适配超长内容 [math]::Floor确保填充字符数为整数,严格保证左右对称- 文本前后的空格是为匹配示例格式,若不需要可直接移除
内容的提问来源于stack exchange,提问作者Ichigo Kurosaki
相关产品推荐
相关产品推荐

