簡體   English   中英

在Haskell中從列表中添加字符串並添加特殊字符

[英]String and add special characters from a list in Haskell

在Haskell中,我曾經使用過濾器從列表中剝離數字集。 但是,我無法使其適用於這種特殊情況。

我有一個字符串列表,如下所示:

["A","B","C","D","E","F","A","B","N"]

我想將[]""字符串化,所以最后一個字符串是(帶空格):

A B C D E F A B N

不應使用像print filter([) ["A","B","C","D","E","F","A","B","N"]這樣的簡單過濾print filter([) ["A","B","C","D","E","F","A","B","N"]刪除[

更新:

我閱讀了這份文件 ,並得到以下結果:

let example = (concat (intersperse " " ["A","B","C","D","E","F","A","B","N"]))
print example
-- this prints "A B C D E F A B N"

但是,當我使用這個:

-- where createalphs create a list of strings
-- and userinput is a string entered by the user 

let setofalph = ($ createalphs $ words userinput)
let example = (concat (intersperse " " setofalph))
print example

我得到這個錯誤

Couldn't match expected type `[[Char]]'
In the second argument of `intersperse', namely `setofalph'
In the first argument of `concat', namely
  `(intersperse " " setofalph)'
In the expression: (concat (intersperse " " setofalph))

unwords正常工作:

λ> unwords ["A","B","C","D","E","F","A","B","N"]
"A B C D E F A B N"

另外, Data.List.intersperseconcat也會有所幫助。

import Data.List

solution :: [String] -> String
solution =  concat . intersperse " "

這是用" "分隔列表中的每個值,然后將列表連接(連接)在一起。

如果要用", "分隔,則可以輕松更改上述功能:

solution :: [String] -> String
solution =  concat . intersperse ", "

以便:

λ> solution ["A","B","C","D","E","F","A","B","N"]
"A, B, C, D, E, F, A, B, N"
λ> putStrLn $ solution ["A","B","C","D","E","F","A","B","N"]
A, B, C, D, E, F, A, B, N

要將其放入您的IO上下文中:

main = do
  x <- getLine
  putStrLn $ solution $ createalphs $ words x

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM