PowerShell中如何将ParsedHTML结果转换为数组?
解决PowerShell中直接将多行HTML字符串转为数组的问题
嘿,我来帮你搞定这个麻烦!你现在完全不用把HTML写入文件再读回来——因为$x[1].outerHTML本质是一个包含换行符的字符串,我们直接在内存里就能把它拆分成数组,下面给你几个实用的方法:
方法1:用-split运算符快速拆分
这是最简单直接的方式,用正则表达式匹配所有常见的换行格式(Windows的\r\n和Unix的\n都能覆盖):
$content = Invoke-WebRequest -Uri $Uri $x = $content.ParsedHtml.getElementsByTagName('TR') # 将多行HTML字符串拆分为数组 $htmlLineArray = $x[1].outerHTML -split '\r?\n' # 测试一下数组效果 $htmlLineArray[0] # 输出第一行HTML $htmlLineArray.Count # 输出总行数
方法2:拆分同时过滤空行
如果你的HTML里有不少空白行,想直接去掉的话,加上Where-Object就行:
$htmlLineArray = $x[1].outerHTML -split '\r?\n' | Where-Object { $_ -trim() -ne '' }
方法3:用StringReader逐行读取
如果你需要更精细的逐行处理逻辑,比如读取时做额外操作,可以用.NET的StringReader类:
$content = Invoke-WebRequest -Uri $Uri $x = $content.ParsedHtml.getElementsByTagName('TR') $htmlString = $x[1].outerHTML $reader = [System.IO.StringReader]::new($htmlString) $htmlLineArray = @() while ($currentLine = $reader.ReadLine()) { # 这里可以加自定义处理,比如trim或者筛选 $htmlLineArray += $currentLine } $reader.Dispose() # 记得释放资源
这些方法都是直接在内存中处理字符串,完全跳过了写入文件的步骤,效率更高也更简洁。
内容的提问来源于stack exchange,提问作者Martin23mm
相关产品推荐
相关产品推荐

