swift Contains使用,判断是否包含某元素,条件判断

在项目开发中遇到需要判断String是否包含emoji表情的需求,要怎样优雅的判断呢?

平时我们经常会用到contains(element:)来判断集合中是否包含某一元素(element需要遵循Equatable协议的)

let sayHello: String = "Hello world")
sayHello.contains("w")  // true

let avengers: [string] = ["雷神", "绿巨人", "美国队长", "钢铁侠"]
avengers.contains("钢铁侠")  // true
avengers.contains("超人") // false

但是emoji不是明确的某个值,该如何写呢,swift为我们提供了闭包contains(where predicate: (Character) throws -> Bool)
遍历每个字符character,判断每个字符是否为emoji

let family1 = "一家人👨‍👩‍👧‍👦"
let family2 = "一家人"
let hasEmoji = family1.contains { (character) -> Bool in
            if character.isEmoji {
                return true
            }
            return false
}
// true

还是不够优雅?既然要优雅,就需要简化

let hasEmoji = family1.contains{ $0.isEmoji}   // true
let hasEmoji = family2.contains{ $0.isEmoji}  // false

swift自动为闭包提供参数名缩写功能,可以直接通过$0$1等来表示闭包中的第一个第二个参数,并且对应的参数类型会根据函数类型来进行判断

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 人生处处充满假设,如果在假设中度过,人生将是多么的无趣?面对现实,正视自己的人生观、价值观!做任何事情都要有足够的...
    靳燕燕阅读 410评论 0 0
  • 前两天开了一个公众号,名叫“Dandu-Design”,中文“單讀设计”。主要推送有关设计类的信息,网罗各类平面,...
    Fliz阅读 261评论 0 1
  • 3月24日是我接受干细胞移植一年之后。 在这一年的过程中,我在曲折缓慢的恢复。一年以来,经历了两次皮肤排异,一次肠...
    晨曦的北极星阅读 3,634评论 2 21