2009年5月24日日曜日

Haskell で文字列の分割 (2)

Google スプレッドシートで文字列の分割」で、他の言語における同様の処理を見直していたとき、 Haskell における文字列の分割が、正規表現を利用した方法以外にもっとお手軽にできないかと思い探してみると、Data.List.Split があるのに気がついた。

 

インストール

標準ではインストールされていないので、 utf8-string を使えるようにしたときのようにインストール。(cf. 4. Building and installing a package) HackageDB: split-0.1.1 の Download より split-0.1.1.tar.gz をダウンロードして解凍。解凍したフォルダ内において、

runhaskell Setup.hs configure 
runhaskell Setup.hs build
runhaskell Setup.hs install

でインストール。

 

Data.List.Split

The Data.List.Split module contains a wide range of strategies for splitting lists with respect to some sort of delimiter, mostly implemented through a unified combinator interface.

(Data.List.Split より)

試してみる。

import Data.List.Split
main = print $  splitOn "," "hoge,piyo,fuga"

 

日本語でも。ただし、ソースコードのエンコーディングは UTF-8 で、結果をファイルで開くときも UTF8 であることを忘れずに。

import Data.List.Split
import System.IO.UTF8 as U
main = mapM_ U.putStrLn $ splitOn "," "ほげ,ぴよ,ふが"

 

その他

ちなみに、自前で実装する場合は、break 関数を使う