【问题标题】:PowerShell : Spliting text into two (or more) linesPowerShell:将文本分成两行(或更多行)
【发布时间】:2017-10-03 03:49:22
【问题描述】:

我刚刚完成了菜单生成器的工作,但我需要像这样添加警告消息或弹出窗口:

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

从这一次我决定用“”(空格)分隔符来分割文本

$textsplit = $text.Split(" ")

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

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

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

我希望你跟上:)

我怎样才能创造这样的条件?嵌套循环?什么样的循环?为了?做-直到?

如果有不清楚的地方,请随时询问。

【问题讨论】:

  • 您好 Kenji,如果您提出确切的问题,我可以帮助您。无法完全理解您的要求
  • 类似this?
  • 我想 :) 很难理解 :) 让我解释一下:我需要将整个警告消息分成几行。每行都有 78 个符号,我想通过单词将其拆分。 F.e :“在此连接期间,OnCloud 命令必须与“云”前缀一起使用,例如 Get-CloudDistributionGroup。”必须分成两行: 1:在此连接期间,OnCloud 命令必须与“Cloud”一起使用 2:前缀,例如 Get-CloudDistributionGroup。你怎么看?

标签: powershell text split lines


【解决方案1】:

我对理解你的问题有点模糊。但是,如果我理解正确,您想处理最多 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

【讨论】:

  • 是的。 ForEach :) 我可以从这里开始。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 2015-12-23
  • 2017-07-03
  • 2016-07-12
  • 2012-02-21
相关资源
最近更新 更多