我正在加载HTML电子邮件,首先我删除了HTML标签,将每个标签替换
为一个空格,然后将单个空格减少了两个空格-这是可行的。
但是现在我有很多空行无法删除。我已经看到了在读取文件时删除空行的示例,但是在删除HTML标记和空格之前,我没有任何空行。
我做:
$m = [IO.File]::ReadAllText("$emailFolder\$fName")
$m = $m -replace "<((?!@).)*?>" # removes all html tag but not adr: <[email protected]>
$m = $m -replace " "," "
$m = $m.Replace(' ',' ').Replace(' ',' ').Replace(' ',' ')
$m = $m.Replace('`r','').Replace('`n`n','`n').Replace('`n`n','`n') # does nothing :(
我尝试了各种版本,但没有一个删除空行。任何想法,我如何实现?
除此之外,我尝试使用正则表达式乘数来连续查找空格并失败。
我做错了什么?
$m = $m.Replace(' +',' ') # does not work
$m = $m.Replace('\s+',' ') # does not work either
如果我对您的理解正确,则您不想删除所有换行符,而只需删除“空”行(仅包含空格的行)。
考虑以下示例字符串:
$multiLine = "Line 1`r`nLine 2`nLine 3`r`n`r`n `n `t `r`nLine 7`r`n"
显示时,它在屏幕上看起来像这样:
Line 1
Line 2
Line 3
Line 7
第4行实际上是空白行,只有CRLF。第5行是一个空格,后跟一个LF,第6行是一个空格,一个制表符,一个空格,然后是一个CRLF。我混合了行尾,因为HTML可能一团糟。为任何事情做好准备是一件好事!
要处理所有这些,您可以像这样进行替换:
$multiLine -creplace '(?m)^\s*\r?\n',''
-creplace
只是-replace
(我想明确)区分大小写的版本。(?m)
是设置正则表达式模式的内联方法。该m
模式代表多行,它使^
和$
锚匹配字符串中每行的开头/结尾(而不是字符串的开头和结尾)。我认为这是解决您问题的关键。^
用来匹配每行的开头,然后使用\s
包含制表符的类来匹配0个或多个空格。^
它将在整个字符串中捕获它们。Line 1
Line 2
Line 3
Line 7
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句