Powershell长文本缩进/填充

时间:2016-08-08 15:22:22

标签: powershell

我正在尝试在写主机中缩进一个长字符串。 虽然.PadLeft()或写入一个短字符串前置空格是微不足道的,但对于长字符串则不一样,因为只要光标位于字符串的最后一列,它就会从第0列继续下一行,例如:

"{0}Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." -f $(" " * 5)

将显示为

       Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliq
ua.

但是,如果我想要它获得:

       Lorem ipsum dolor sit amet, consectetur adipiscing elit,
       sed do eiusmod tempor incididunt ut labore et dolore mag
       na aliqua.

有没有办法实现这个目标? 非常感谢你们!

1 个答案:

答案 0 :(得分:1)

您必须根据控制台的宽度自行拆分字符串,然后填充字符串并显示:

$consoleWidth = $Host.UI.RawUI.BufferSize.Width
$desiredIndent = 5  # spaces
$chunkSize = $consoleWidth - $desiredIndent

$bigString = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. '*10

[RegEx]::Matches($bigString, ".{$chunkSize}|.+").Groups.Value | ForEach-Object {
    ' '*$desiredIndent + $_
}