gpt4 book ai didi

Swift String hasPrefix 使用字符串数组

转载 作者:搜寻专家 更新时间:2023-10-31 22:24:27 28 4
gpt4 key购买 nike

我想避免在下面的示例代码中使用 if 语句,而是对我的号码字符串调用 hasPrefix 并传入 前缀 数组。有没有办法在 Swift 中做到这一点?

let prefixes: [String] = ["212", "213", "214"]
let number: String = "213-555-1212"

if number.hasPrefix("212") || number.hasPrefix("213") {
print("found")
}

最佳答案

这可以简洁地完成:

if prefixes.contains(where: number.hasPrefix) {
print("found")
}

那么,这是如何工作的?

  1. contains(where:) 采用一个闭包,为 prefixes 数组的每个元素调用该闭包以确定该元素是否符合所需条件。由于 prefixes 是一个 String 数组,因此该闭包具有签名 (String) -> Bool,这意味着它需要一个 String 并返回一个 Boolcontains(where:) 将继续为 prefixes 数组中的每个元素调用给定的闭包,直到它返回一个 true,或者直到它用完 prefixes 数组中的项目,此时答案为 false(prefixes 不包含符合条件的项目) .

  2. 在这种情况下,我们将函数 number.hasPrefix 作为闭包传递。通常,您会使用 number.hasPrefix,方法是使用如下参数调用它:number.hasPrefix("212")。如果没有参数,number.hasPrefix 指的是调用 number 的函数 hasPrefix 并且该函数具有我们正在寻找的签名:(字符串)-> bool 。所以它可以用作 contains(where:) 的闭包。

  3. 因此,prefixes.contains(where: number.hasPrefix) 从数组中获取每个 prefix 并检查 number.hasPrefix(prefix) 返回 true。如果找到一个,它会停止搜索并返回 true。如果它们都返回 false,则 prefixes.contains(where:) 返回 false。

关于Swift String hasPrefix 使用字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53328176/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com