由于MySQL的utf8不支持4字节字符,我正在寻找一种方法来检测并消除Ruby中字符串中的任何4字节utf8字符.我知道我可以更新我的表使用utf8m4,但有几个原因是不可能或所需的解决方案.
简单地将字符串编码为ASCII将删除这些字符,但也会删除所有其他非ASCII字符,这是不好的.
注意:这个问题在不支持包含的表情符号的系统上看起来很奇怪.
这是如何从字符串中删除表情符号的后续问题.
我想构建一个正则表达式,匹配可以在Mac OS X/iOS中输入的所有表情符号.
明显的Unicode块涵盖了大多数,但不是所有这些表情符号:
维基百科提供了OS X Mountain Lion和iOS 6上Apple Color Emoji中可用的所有符号的编译列表,这看起来是一个很好的起点:(稍微更新)
people = '????????'
nature = '????????'
objects = '?????????????'
places = '?????????'
symbols = '1??2??3??4??5??6??7??8??9??0??#??????????????????????????????????????????????????????????????????????????????????????©?®?™??????????????????????????????????????????????'
emoji = people + nature + objects + places + symbols # all emoji combined
Run Code Online (Sandbox Code Playgroud)
大多数字符都有一个代码点,转换它们很容易:
但有些字符是"使用 …
我想确定我的vector的哪些元素包含表情符号:
x = c('', 'no', '', '', 'no', '', '?', '??')
x
# [1] "\U0001f602" "no" "\U0001f379" "\U0001f600" "no" "\U0001f61b" "?" "??"
Run Code Online (Sandbox Code Playgroud)
相关帖子只涵盖其他语言,因为大部分都是指专业图书馆,我无法想出一种翻译成R的方法:
第二个看起来很有希望,但唉(不是通过提供固定perl = TRUE):
x[grepl('[\u{1F600}-\u{1F6FF}]', x)]
Run Code Online (Sandbox Code Playgroud)
错误:无效\ u {xxxx}序列(第1行)
类似的问题来自其他问题.我们怎样才能匹配R中的表情符号?
我需要使用正则表达式在Ruby中的字符串中匹配emojis.我已经尝试了几个unicode序列,似乎没有人完成这项工作.我也不确定表情符号的开始和结束范围在哪里.
是否有任何正则表达式用于输入没有表情符号的文本(字母)?
我试图反转正则表达式但它工作不正确
/(?!:\ud83c[\udf00-\udfff]|\ud83d[\udc00-\ude4f]|\ud83d[\ude80-\udeff])$/g
在这种情况下,如果我输入letters(a-z),则该字符串无效