如何从字符串中删除表情符号 [英] How do I remove emoji from string

查看:16
本文介绍了如何从字符串中删除表情符号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的问题是使用正则表达式从字符串中删除emoji,而不是从字符串中删除CJK(中文、日语、韩语)字符。我尝试使用此正则表达式:

REGEX = /[^u1F600-u1F6FFs]/i

这个正则表达式工作得很好,只是它还可以检测我需要的中文、日文和韩文字符。你知道如何解决这个问题吗?

推荐答案

Karol S已提供a solution,但原因可能不清楚:

"u1F600"实际上是"u1F60"后跟"0"

"u1F60"    # => "ὠ"
"u1F600"   # => "ὠ0"

您必须对FFFF上的代码点使用大括号:

"u{1F600}" #=> "😀"
因此,字符类[u1F600-u1F6FF]被解释为[u1F60 0-u1F6F F],即 匹配"u1F60",范围"0".."u1F6F""F"

使用大括号可以解决此问题:

/[u{1F600}-u{1F6FF}]/

这与以下Unicode块中的(表情符号)字符匹配:


您还可以使用unpackpackbetween?来获得类似的结果。这也适用于Ruby 1.8.7,它不支持正则表达式中的Unicode。

s = 'Hi!😀'
#=> "Hi!360237230200"

s.unpack('U*').reject{ |e| e.between?(0x1F600, 0x1F6FF) }.pack('U*')
#=> "Hi!" 

关于您的Rubular example-Emoji为单字符:

"😀".length  #=> 1
"😀".chars   #=> ["😀"]

kaomoji是多个字符的组合:

"^_^".length #=> 3
"^_^".chars  #=> ["^", "_", "^"]

匹配这些内容是一项非常不同的任务(您应该在一个单独的问题中提问)。

这篇关于如何从字符串中删除表情符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆