沒有辦法改變ReadLine
的行爲,它只會將CRLF識別爲行終止符。因此,唯一簡單的解決方案就是您已經描述的解決方案。
編輯
其實還有另外一個庫,它應該是現成可用的,可能提供一些幫助的ASP服務器上。這是ADODB庫。
ADODB.Stream
對象具有LineSeparator
屬性,該屬性可以分配10或13以覆蓋它通常使用的默認CRLF。該文檔是不完整的,因爲它沒有描述如何將它與ReadText
一起使用。你可以通過傳遞-2作爲參數來獲得ReadText
方法從流中返回下一行。
這個例子看看: -
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
注意,默認字符集是unicode的,所以你需要指定正確的字符集,如果它不是Unicode正在使用的文件。我在文檔中使用「Unicode」這個詞,意思是它實際上意味着UTF-16。這裏的一個優點是ADODB Stream可以處理UTF-8,與Scripting
庫不同。
順便說一句,我認爲MAC使用CR作爲行尾?它使用LF的Unix文件格式不是嗎?
你可能在Unix上關於Mac和LF上的CR的問題上很失敗。說實話,我是通過2個遠程桌面會話來調試這個東西,剪貼板沒有被複制。我只知道有差異,我很早就在調試會議上詢問了什麼樣的機器創建了這個文件。 安東尼,我只是想再次表示感謝你的時間,並認爲你把你的答案。對此,我真的非常感激。 – 2009-12-10 02:09:23
Mac OS X是一個Unix。這是經典的Mac OS使用CR(儘管一些應用程序仍然如此,我認爲)。 – 2013-06-19 07:38:17