我有一個包含這個文件:讀從文件的東西,並把它的數據類型下
(Float,Float,Float)"sometext"
(Float,Float,Float)"sometext"
(Float,Float,Float)"sometext"
...
...
,我想我的程序從文件中讀取一條線,把(浮動,浮動,浮動)到一個新的數據類型下特里普爾和「someText」則會爲String和這一切使整個事情是這樣的:
SomeDataType(浮動,浮動,浮動)「someText」則會
我到目前爲止:
readFromDisc filePath = do
fileHandle <- openFile "/tmp/lala.txt" ReadMode
contents <- hGetContents fileHandle
putStrLn $ readOneLine contents
如果文件中包含此:
(5.0,6.0,7.0)"faraway"
(8.0,9.0,0.0)"holdon"
我得到:
"(5.0,6.0,7.0)\"faraway\""
現在,因爲我得到的字符串我想用
breakInput input = break (=='"') input
向得到這個:
("(5.0,6.0,7.0)","\"faraway\"")
這是一對字符串,我打算用一些東西來解析三位一體和文本,但所有這些都不正確。
有沒有更好的方法來做到這一點?
+1。但是使用'Double'而不是'Int'。同時爲了使解決方案完整:使用'lines'分割線條更容易。一切都是一蹴而就的:'回報。映射parseLine。 lines =「readFile」r.txt「'。 – sastanin 2010-11-12 14:02:51
@jetxee感謝您完成解決方案。我修復了類型簽名。 – Heatsink 2010-11-12 14:22:04
YOu也應該認真考慮Parsec,如果它更復雜。 – fuz 2010-11-13 07:20:15