Haskell程式將字串轉換為陣列


在Haskell中,我們將使用listArray和intersperse函式將字串轉換為陣列。在第一個示例中,我們將使用(stringToArray s = listArray (0, length s - 1) s)函式,在第二個示例中,我們將使用(stringToArray s = s)函式。在第三個示例中,我們將使用(stringToArray s = intersperse ' ' s)。

演算法

  • 步驟1 - 定義stringToArray函式

  • 步驟2 - 程式執行將從main函式開始。main()函式控制整個程式。它被寫成main = do。

  • 步驟3 - 定義變數'myString',它將儲存字串值。

  • 步驟4 - 一旦函式被呼叫,相應的字串值的陣列結果將列印到控制檯。

示例1

在本例中,使用listArray函式將字串轉換為陣列。

import Data.Array

stringToArray :: String -> Array Int Char
stringToArray s = listArray (0, length s - 1) s

main :: IO ()
main = do
  let myString = "hello"
  let myArray = stringToArray myString
  print myArray

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
array (0,4) [(0,'h'),(1,'e'),(2,'l'),(3,'l'),(4,'o')]

示例2

在本例中,使用列表推導式將字串轉換為陣列。

import Data.Array

stringToArray :: String -> Array Int Char
stringToArray s = array (0, length s - 1) [(i, s !! i) | i <- [0..length s - 1]]

main :: IO ()
main = do
  let myString = "hello"
  let myArray = stringToArray myString
  print myArray

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
array (0,4) [(0,'h'),(1,'e'),(2,'l'),(3,'l'),(4,'o')]

示例3

在本例中,使用使用者定義函式將字串轉換為陣列。

stringToArray :: String -> [Char]
stringToArray s = s

main :: IO ()
main = do
  let myString = "hello"
  let myArray = stringToArray myString
  print myArray

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
"hello"

示例4

在本例中,使用intersperse函式將字串轉換為陣列。

import Data.List

stringToArray :: String -> [Char]
stringToArray s = intersperse ' ' s

main :: IO ()
main = do
  let myString = "hello"
  let myArray = stringToArray myString
  print myArray

輸出

[1 of 1] Compiling Main             ( main.hs, main.o )
Linking main ...
"h e l l o"

結論

在Haskell中,字串只是一個字元列表。但是,如果我們想將字串表示為字元陣列,我們可以使用Data.Array模組,該模組提供了用於處理陣列的函式。要將字串轉換為字元陣列,我們可以簡單地從字串建立字元列表,然後使用listArray和intersperse函式從字串列表建立陣列。

更新於: 2023年3月28日

984 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告