Нет способа изменить поведение ReadLine
, он будет распознавать только CRLF как терминатор строки. Следовательно, единственное простое решение - это то, которое вы уже описали.
Редактировать
На самом деле есть еще одна библиотека, которая должна быть доступна из коробки на сервере ASP, которая может предложить некоторую помощь. Это библиотека ADODB.
Объект ADODB.Stream
имеет свойство LineSeparator
, которому можно присвоить 10 или 13 для переопределения стандартного CRLF, который он обычно использует. Документация неоднородна, потому что она не описывает, как это можно использовать с ReadText
. Вы можете получить метод ReadText
для возврата следующей строки из потока, передав в качестве параметра -2.
Взгляните на этот пример: -
Dim sLine
Dim oStreamIn : Set oStreamIn = CreateObject("ADODB.Stream")
oStreamIn.Type = 2 '' # Text
oStreamIn.Open
oStreamIn.CharSet = "Windows-1252"
oStreamIn.LoadFromFile "C:\temp\test.txt"
oStreamIn.LineSeparator = 10 '' # Linefeed
Do Until oStreamIn.EOS
sLine = oStreamIn.ReadText(-2)
'' # Do stuff with sLine
Loop
oStreamIn.Close
Обратите внимание, что по умолчанию CharSet является Unicode, поэтому вам нужно будет назначить правильный CharSet, используемый файлом, если он не Unicode. Я использую слово «Unicode» в том смысле, что документация действительно означает UTF-16. Одним из преимуществ здесь является то, что ADODB Stream может обрабатывать UTF-8 в отличие от библиотеки Scripting
.
Кстати, я думал, что MAC использовали CR для концов строк? Его формат файла Unix, который использует LF, не так ли?