从带有变量的字符串中删除一条线,而无需留下新行



将字符串写入带有以下代码

的RichTextbox
$TextBox.text = "`r`n Some Text `r`n" + $TextBox.text

在某些情况下,我需要从文本中删除特定行。问题,我设法找到并删除了行,但其余文本仅移动1个阵容,而不是2

$TextBox.text = (($TextBox.text -split "`n") | ? {$_ -notmatch 'WordToSearch'}) -join "`n"

正如我所说,它删除了这条线,但仍然存在不必要的新线路。我如何在不使用数组或其他复杂方式的情况下也将其删除?

例如,这就是文本的外观:

\空行第1行,一些文字\空行第2行,一些文字\空行

尝试删除第1行后,看起来像这样:

\空行\空行第2行,一些文字\空行

预期:

\空行第2行,一些文字\空行

这是从字符串中删除空白行的一种方法:

$str = "Line 1`r`n`r`n`r`nLine 4`r`n`r`nLine 6"
while ( $str -match "`r`n`r`n" ) {
  $str = $str -replace "`r`n`r`n","`r`n"
}
$str
# now $str contains only "Line 1", "Line 4", and "Line 6"

您应该能够使用-replace,然后.trim(),以确保您不会最终有多个空白行(如果要删除的行是最后一个(,然后添加您的最终空白行返回+'`r`n'

$find = "row 1"
$TextBox.text = ($TextBox.text -replace "(?mi)^.*$find.*`$(`r?`n)*",'').trim()+'`r`n'

最新更新