我刚刚完成了菜单生成器的工作,但我需要添加警告信息或弹出窗口,如下所示:
警告信息与菜单的其他元素一样,应该具有相同的宽度80(内部宽度为78,因为边框需要两个)。我用一个参数构建了一个函数,可以很容易地为将要显示的文本生成该消息。问题是当我把文字长于78个字符时,我得到错误。我想将它分成两个(或更多,取决于我们将得到多少行)参数导致没有人会在每个参数/行上计数到78。我正在寻找将文本分成两行或更多行以适应内部宽度78的可能性。
从那时起,我决定用“”(空格)分隔符
分割文本$textsplit = $text.Split(" ")
然后我决定使用$textsplit
循环将Do-Until
的每个元素添加到数组中
$warningmsgline1.Add($textsplit[$i])
$warningmsgline1.Add(" ")
创建一个包含少于78个字符的句子(单词)的新变量。
我希望你能跟上:)
我该如何创造这样的条件?嵌套循环?什么样的循环?对于? DO-直到?
随意询问是否有不明确的事情。
答案 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