我想编写一个简单的函数,它使用 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
需要将Int
是ord
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/