[英]Haskell: list of strings to list of tuples
我有類似的字符串列表:
["1,AA,3","4,BB,6","7,CC,9"]
我想得到像這樣的元組列表:
[(1,AA,3),(4,BB,6),(7,CC,9)]
請幫忙。 謝謝
編輯:
我嘗試了類似的東西:
tuples (x:xs) = do
foo ++ splitOn "," x
tuples xs
return foo
這可能會給我像這樣的列表:
"1,AA,3,4,BB,6,7,CC,9"
但我不知道如何將其轉換為元組。
AA,BB,CC應該是字符串。
我也想在列表中顯示如下內容:
["1,AA,3","4,,6","7,CC,9"]
轉換為
[(1,"AA",3),(4,6),(7,"CC",9)]
import Data.List.Split -- https://hackage.haskell.org/package/split
arrayToThreeTuple :: [String] -> [(Int,String,Int)]
arrayToThreeTuple = map (toThreeTuple.splitOn ",")
where
toThreeTuple :: [String] -> (Int, String, Int)
toThreeTuple [a, b, c] = (read a :: Int, b, read c)
toThreeTuple _ = undefined
一點解釋: splitOn
在給定的子String
上拆分字符串,例如
GHCI List.Split> splitOn "," "1,AA,3"
["1","AA","3"]
下次read
會將String
轉換為其他類型,可以將其寫入read "1" :: Int
或ghc可以通過類型簽名為您推斷出它(請參閱read c
)。
下一行是“捕獲所有行”,它緩存除_
以外的[a,b,c]
以外的所有其他模式[a,b,c]
由_
指示),並導致運行時錯誤( undefined
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.