为什么PowerShell .Split()也会拆分新行?

时间:2014-10-15 09:48:57

标签: powershell split newline

我有一个HTML文档,我得到这样的结果:

$HTML = (gc C:\test.html)

然后我把它分开:

 $ImgArray = $HTML.split("'").split('"');

但它不仅会分为单引号和双引号,还会分散在每个换行符上。

例如,HTML文档如下所示:

<head>

    <title>I AM THE TITLE</title>

它在<head><title>之间拆分两次。我在for循环中测试它,

for ($i=0; $i -lt $ImgArray.length; $i++) {
    $ImgArray[$i]+"BREAK"
}

输出是这样的:

<head>BREAK
BREAK
<title>Index</title>BREAK

为什么会发生这种情况,如何阻止它?

1 个答案:

答案 0 :(得分:2)

问题是.split()不是在单个字符串上操作,而是在它们的集合上操作。 Get-Content生成一个字符串数组,而不是单个字符串,然后.split()对每个字符串进行操作,生成一个新的集合。

如果您确实希望将换行符包含在拆分块中,则可以强制Get-Content不要使用Get-Content -Raw拆分行,然后.Split()将执行您期望的操作。但是,如果您的文件非常大,这可能会导致内存问题 - 可能更好地适应线已经拆分的事实,除非您确实有一个用例需要在字符串中间使用换行符。如果您需要加入一组字符串,请使用Out-String

相关问题