在Haskell中,如何获取UTF8字符串中的字节数?

时间:2017-07-03 02:16:35

标签: string haskell character-encoding

假设我有UTF8字符串module top; aaa aaa(); assign aaa.bbb.pie[0].ccc.ddd = 0; endmodule module aaa(); bbb bbb(); endmodule module bbb; generate for (i = 0; i < 2; i++) begin: pie ccc ccc(); end endgenerate endmodule // bbb module ccc; wire ddd; endmodule 。它有16个字符,占用18个字节。我怎样才能让haskell向我显示这个字符串占用的字节数?

我尝试过使用Data.ByteArray,Data.Text,ByteString,并且在每种情况下我都做得很短。

1 个答案:

答案 0 :(得分:4)

您可以使用优秀的utf8-string包。

import qualified Data.ByteString as BS
import qualified Data.ByteString.UTF8 as UTF8

numBytesUtf8 :: String -> Int
numBytesUtf8 = BS.length . UTF8.fromString

然后,使用你的例子,

ghci> numBytesUtf8 "Hello Snowman ☃!"
18

当然,你可能不应该首先这样做。 UTF8.fromStringBS.length可能是您想要使用的函数,但您的字符串可能应该已经 bytestrings,以便您对编码它们需要多少字节感兴趣就这样。