Swift 中判断字符串是否有 Emoji 表情

更新:网络上流传的 emoji 代码点不太完整,我按照维基百科的资料重新整理了一下,文中的 Swift 版本代码已更新。


很多时候我们需要判断一个字符、或者说是一句话里是不是包含了emoji,使用 Swift 语言开发 app 也不例外,比如可以使用正则表达式——但很遗憾,似乎不同的语言对于正则表达式的支持区别, \u  这个功能不是到哪都好使的,所以最简单粗暴的办法,我们弄一个字符串,它包含了所有可能会用到的 emoji,然后去检索它:

其实吧,说句良心哈,效率还不错……当然了,这样的结果就是你的列表得时常更新——同时你还得忍受 Xcode 卡得一逼的状态。

使用遍历

所以,网上有一个用 OC 实现的扩展,似乎流传很广:

其实它的原理还是去匹配 Emoji 所在区间,所以,如果我们应用上 Swift 语句以及其特性,那么 Swift 版本就是这样:

?是不是很简洁?

代码来自:Check if Swift string contains an emoji or dingbat charater

“Swift 中判断字符串是否有 Emoji 表情”的2个回复

    1. 是的,这个并不能覆盖所有的emoji范围,因为emoji范围本身是演进扩大的,你要根据变化来改这个值的范围,比如说我补充了如下的代码,这几个就不在正文那个范围之内的。
      if (self.range(of: "8️⃣") != nil) {
      return true
      } else if (self.range(of: "0️⃣") != nil) {
      return true
      } else if (self.range(of: "6️⃣") != nil) {
      return true
      }

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.