我有一个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
为什么会发生这种情况,如何阻止它?
答案 0 :(得分:2)
问题是.split()
不是在单个字符串上操作,而是在它们的集合上操作。 Get-Content
生成一个字符串数组,而不是单个字符串,然后.split()
对每个字符串进行操作,生成一个新的集合。
如果您确实希望将换行符包含在拆分块中,则可以强制Get-Content
不要使用Get-Content -Raw
拆分行,然后.Split()
将执行您期望的操作。但是,如果您的文件非常大,这可能会导致内存问题 - 可能更好地适应线已经拆分的事实,除非您确实有一个用例需要在字符串中间使用换行符。如果您需要加入一组字符串,请使用Out-String
。