我可以使用分隔符在Haskell中拆分列表吗?
我有一个包含以下内容的文本文件:
1 kg g
5000 m km
98.6 f c
我应该读取文件并将数字从第一个单位转换为第二个单位并将输出写入另一个文本文件,因此最终结果应该是:
1000
5
37
到目前为止我的代码是:
import System.IO
import Control.Monad
main = do
contents <- readFile "Readings.txt"
let ls = lines contents
print $ ls
when (length contents > 0) $
writeFile "Outputs.txt" contents
输出:
["1 kg gr","5000 m kmr","98.6 f cr"]
目前我正在尝试按空格拆分列表 ls 以便我可以单独拥有该行中的每个元素。我的思维过程对吗?或者我能以更好的方式解决这个问题吗?
回答
标准words函数将在空格上拆分:
> words "1 kg g"
["1","kg","g"]
对于其他分隔符,有Data.List.Split来自split库的模块。
要从rDOS 格式的文本文件中删除,请使用以下内容代替readFile:
main = done
handle <- openFile "Readings.txt"
hSetNewlineMode handle universalNewlineMode
contents <- hGetContents handle
...