我有一个需要处理的大文本,一次一行。我现在的方式是将数据发送到文本文件(如下面的代码所示)并导回到变量中,这允许我使用foreach构造。我相信有比这更好的方法。我感谢任何帮助。
$rawData = '
This is a multiline text1
This is a multiline text2
This is a multiline text3
This is a multiline text4
'
$rawData | Out-File c:\temp.txt -Force
$DataFromFile = Get-Content c:\temp.txt
foreach ($i in $DataFromFile) {
$i
}
答案 0 :(得分:1)
直接拆分:
foreach ($row in $rawData -split '\r?\n') {
$row
}
或手动提取以避免创建临时数组:
$pos = 0
do {
# exract the next line
$i = $rawData.indexOfAny("`r`n", $pos)
if ($i -eq -1) { $i = $rawData.length }
$row = $rawData.substring($pos, $i - $pos)
while ($rawData[$i+1] -match "[\r\n]") { $i++ }
$pos = $i + 1
#process the line
$row
} until ($pos -ge $rawData.length)
还使用文字引号来避免字符串中的空行:
$rawData = @'
This is a multiline text1
This is a multiline text2
This is a multiline text3
This is a multiline text4
'@