簡體   English   中英

Haskell:字符串列表到元組列表

[英]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.

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