文件处理 - Haskell

Mar*_*ria 1 haskell file-processing winghci

我如何在haskell中实现以下内容:

  1. 我从命令行收到一个输入文件.此输入文件包含用制表符,换行符和空格分隔的单词.
  2. 我必须用逗号替换这些元素(制表符,换行符和空格).
  3. 然后将结果写入一个名为的文件output.txt.

任何帮助深表感谢.我的哈克尔技能仍在发展中.


到目前为止,我有这个代码:

    processFile::String->String
    processFile [] =[]
    processFile input =input

    process :: String -> IO String
    process fileName = do
    text <- readFile fileName
    return (processFile text)

    main :: IO ()
    main = do
    n <- process "input.txt"
    print n
Run Code Online (Sandbox Code Playgroud)

在processFile函数中,我应该处理输入文件中的文本.

dfl*_*str 8

您可以使用该getArgs函数在命令行上读取参数.例如:

import System.Environment (getArgs)

main = do
  args <- getArgs
  case args of
    [arg] -> putStrLn $ "You gave me one arg: " ++ arg
    _     -> putStrLn $ "You gave me " ++ show (length args) ++ " arguments."
Run Code Online (Sandbox Code Playgroud)

您可以使用该readFile函数来读取文件.

contents <- readFile "test.txt"
putStrLn contents -- Prints the contents of the file
Run Code Online (Sandbox Code Playgroud)

您可以使用该writeFile函数写入文件:

writeFile "test2.txt" "Some file data\n" -- Writes the data to the file
Run Code Online (Sandbox Code Playgroud)

制表符,换行符和空格可以称为空格或单词分隔符.该words函数将字符串转换为单词列表.

print $ words "some text with\nmany words"
-- prints ["some", "text", "with", "many", "words"]
Run Code Online (Sandbox Code Playgroud)

intersperse函数在列表的每个元素之间插入一个分隔符:

import Data.List (intersperse)

main =
  print $ intersperse '.' ["some", "text", "with", "many", "words"]
  -- prints "some.text.with.many.words"
Run Code Online (Sandbox Code Playgroud)

intercalate如果需要更长的分隔符,也可以查看该功能.


这些是您的程序所需的所有工具,我认为您可以弄清楚其余部分.祝好运!