我想编写一个简单的函数,它使用 ByteString 作为分隔符将 [ByteString] 拆分为 '\n'。我的尝试:

import Data.ByteString

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

这会引发错误,因为 '\n'Char 而不是 Word8 ,这是 Data.ByteString.splitWith 所期望的。

如何将这个简单的字符转换为 Word8 将使用的 ByteString

最佳答案

你可以只使用数字文字10,但是如果你想要将字符转换文本可以使用fromIntegral (ord '\n')(该fromIntegral需要将Intord yield 转换成Word8)。您必须为 Data.Char 导入 ord

您还可以导入 Data.ByteString.Char8 ,它提供了在相同的 Char 数据类型上使用 Word8 而不是 ByteString 的功能。 (实际上,它有一个 lines 函数,可以完全满足您的要求。)但是,通常不建议这样做,因为 ByteString s 不存储 Unicode 代码点(即 0x25181223134 但 rawi.21313413413414134314131343141313134314131413134314131343141313431341314134313413141414131343141 s

如果您正在处理文本数据,您应该考虑使用 Char 而不是 Word8

关于string - Haskell 如何创建 Word8?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8966439/

10-12 22:12