我正在尝试在写主机中缩进一个长字符串。 虽然.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.
有没有办法实现这个目标? 非常感谢你们!
答案 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 + $_
}