PowerShell:将文本拆分为两行(或更多行)

时间:2017-05-04 19:57:44

标签: powershell text split lines

我刚刚完成了菜单生成器的工作,但我需要添加警告信息或弹出窗口,如下所示:

Warning Message

警告信息与菜单的其他元素一样,应该具有相同的宽度80(内部宽度为78,因为边框需要两个)。我用一个参数构建了一个函数,可以很容易地为将要显示的文本生成该消息。问题是当我把文字长于78个字符时,我得到错误。我想将它分成两个(或更多,取决于我们将得到多少行)参数导致没有人会在每个参数/行上计数到78。我正在寻找将文本分成两行或更多行以适应内部宽度78的可能性。

从那时起,我决定用“”(空格)分隔符

分割文本
$textsplit = $text.Split(" ")

然后我决定使用$textsplit循环将Do-Until的每个元素添加到数组中

$warningmsgline1.Add($textsplit[$i])
$warningmsgline1.Add(" ")

创建一个包含少于78个字符的句子(单词)的新变量。

我希望你能跟上:)

我该如何创造这样的条件?嵌套循环?什么样的循环?对于? DO-直到?

随意询问是否有不明确的事情。

1 个答案:

答案 0 :(得分:0)

我对理解你的问题有点模糊。但如果我理解正确,你想要处理最多78个字符的换行?这还不完整,但应该让你朝着正确的方向前进。

$message = "This is a really long message that is longer than 80 characters. It will need to be wrapped onto a second line."

$wordArray = $message.Split(' ')

$output = @()
$currentLine = ""

$wordArray | ForEach-Object {
    if ($currentLine.Length + 1 + $_.Length -le 78) {
        $currentLine = "$currentLine $_"
    }   
    else {
        $output += $currentLine
        $currentLine = $_   
    }
}

## Add remainder to output
$output += $currentLine 

$output