我正在开发一个类似简单excel的haskell中的小项目。基本上我的电子表格表示为列表清单(类型为[[String]])。示例板如下所示:如何将转换为字符串值的[[String]]转换回原始类型[[String]]?
[["2", "=SUM(A0:C0)", "1"], ["7", "2", "3"], ["2", "=SUM(A0:B0)", ""]]
其中一个要求是将文件保存在文件中,并且还可以从文件中导入文件。
要保存的文件,我的板转换为字符串(能够把它写在文件中):
filenameOut <- getLine
writeFile filenameOut (show (board))
putStrLn "Board saved to file."
要上载板:
filenameIn <- getLine
handle <- openFile filenameIn ReadMode
input <- hGetContents handle
但输入字符串“[[”2“,”= SUM(A0:C0)“,”1“],[”7“,”2“,”3“],[”2“,”= SUM(A0:B0 )“,”“]]”,我想将它转换回[[String]]。 我试图使用正则表达式,但它似乎不是一个好的解决方案。
是否有一些其他的解决方案来做某种逆操作来返回[[String]]? 请温柔一点,我是哈斯克尔的新人。
我对字符串'“[[” 2" ,“= SUM(A0很困惑: C0)“,”1“,[”7“,”2“,”3“],[”2“,”= SUM(A0:B0)“,”“]]]''。这似乎是无效的。 –
@ eli-sadoff,是的,我只是想表明这是一个字符串。在文件中它看起来像:[[“2”,“= SUM(A0:C0)”,“1”],[“7”,“2”,“3”],[“2”,“= SUM (A0:B0)“,”“]]。当我按照我提出的方式从文件上传它时,它是String类型的。 – rocksparrow
您正在查找的术语是读取或“解析”字符串。查看文本以获取结构化值的过程通常称为解析。我们可以获得更多的技术和讨论lexing,但是如果你寻找CSV解析器或者只是'read'函数,那么你会好起来的。 –