不久前,我做了一个Mastodon / Twitter IRC bot。效果很好,但是有人抱怨说,当人们在乳齿象上使用表情符号时(在某些用户名中似乎发生了很多..),它破坏了终端。

我想知道是否有一种方法可以在将它们发送到IRC之前从ByteString中删除它们(或者至少提供这样做的选项),在谷歌搜索中发现了这一点:removing emojis from a string in Python

如果我正确理解的话,看起来\ U0001F600- \ U0001F64F应该是表情符号范围,但是我对regex从未有过大的了解。有什么简单的方法可以将其翻译为Haskell吗?我尝试过阅读正则表达式的一些内容,但是当我尝试尝试时,只会收到“字符'U'处的字符串/字符文本中的词法错误”,我认为语法必须是python。

谢谢

最佳答案

不是表情符号或Unicode专家,但这似乎可行:

isEmoji :: Char -> Bool
isEmoji c = let uc = fromEnum c
            in uc >= 0x1F600 && uc <= 0x1F64F

str = "😁wew😁"

正如Daniel Wagner指出的,这可以做得更好:
isEmoji :: Char -> Bool
isEmoji c = c >= '\x1F600' && c <= '\x1F64F'

ghci中的演示:
λ> str
"\128513wew\128513"
λ> filter isEmoji str
"\128513\128513"
λ> filter (not . isEmoji) str
"wew"

说明:fromEnum函数将字符转换为Unicode定义的相应Int值。我只是在函数中检查表情符号的unicode范围,以确定它是否实际上是表情符号。

关于regex - 从Haskell中的字符串中删除所有表情符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46380952/

10-13 06:21