14

a を区切り文字として使用するようにByteString分割する単純な関数を書きたいと思います。私の試み:[ByteString]'\n'

import Data.ByteString

listize :: ByteString -> [ByteString]
listize xs = Data.ByteString.splitWith (=='\n') xs

'\n'Charではなく であるためWord8、これはエラーをスローしますData.ByteString.splitWith

Word8この単純なキャラクターを、ByteString遊べるに変えるにはどうすればよいですか?

4

1 に答える 1

16

数値リテラル10をそのまま使用することもできますが、文字リテラルを変換する場合は使用できます(fromIntegral (ord '\n')をに変換するにfromIntegralは が必要です)。をインポートする必要があります。IntordWord8Data.Charord

同じデータ型の代わりにData.ByteString.Char8使用する関数を提供する をインポートすることもできます。(実際、それはあなたが望むことを正確に行う機能を持っています。) しかし、s は Unicode コードポイント (これが表すもの) を保存するのではなく、生のオクテット (すなわち s) を保存するため、これは一般的に推奨されませCharWord8ByteStringlinesByteStringCharWord8

テキスト データを処理している場合は、Text代わりに を使用することを検討してくださいByteString

于 2012-01-23T01:48:56.350 に答える