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

更新:網絡上流傳的 emoji 代碼點不太完整,我按照維基百科的資料重新整理了一下,文中的 Swift 版本代碼已更新。


很多時候我們需要判斷一個字符、或者說是一句話裡是不是包含了emoji,使用 Swift 語言開發 app 也不例外,比如可以使用正則表達式——但很遺憾,似乎不同的語言對於正則表達式的支持區別, \u 這個功能不是到哪都好使的,所以最簡單粗暴的辦法,我們弄一個字符串,它包含了所有可能會用到的 emoji,然後去檢索它:

其實吧,說句良心哈,效率還不錯……當然了,這樣的結果就是你的列表得時常更新——同時你還得忍受 Xcode 卡得一逼的狀態。

使用遍歷

所以,網上有一個用 OC 實現的擴展,似乎流傳很廣:

其實它的原理還是去匹配 Emoji 所在區間,所以,如果我們應用上 Swift 語句以及其特性,那麼 Swift 版本就是這樣:

?是不是很簡潔?

代碼來自:檢查斯威夫特字符串包含的表情符號或白帶系統字符

由...出版 R0uter

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

加入對話

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
      }