在Swift中如何判断字符串是否包含字符串数组中的任意子串
功能实现:判断字符串是否包含指定数组中的任意子串
现有目标字符串"A very nice beach",需要判断其是否包含wordGroups数组中的任意子串,以下是不同场景的Swift实现方案:
方案1:基础遍历实现(易扩展自定义逻辑)
逻辑清晰,适合后续需要在匹配时添加额外判断规则的场景:
// 目标字符串 let targetString = "A very nice beach" // 待匹配的关键词数组 let wordGroups = [ "beach", "waterfront", "with a water view", "near ocean", "close to water" ] var isContainsAnyKeyword = false for word in wordGroups { if targetString.contains(word) { isContainsAnyKeyword = true break // 匹配到第一个就终止遍历,提升性能 } } print(isContainsAnyKeyword) // 输出结果:true
方案2:高阶函数简化写法(一行实现)
无需额外自定义逻辑时,可直接用contains高阶函数简化代码:
let targetString = "A very nice beach" let wordGroups = [ "beach", "waterfront", "with a water view", "near ocean", "close to water" ] let isContainsAnyKeyword = wordGroups.contains(where: targetString.contains) print(isContainsAnyKeyword) // 输出结果:true
方案3:支持特殊匹配规则
如果需要忽略大小写、忽略重音符号等特殊匹配需求,可以用range(of:options:)实现:
let targetString = "A very nice beach" let wordGroups = [ "beach", "waterfront", "with a water view", "near ocean", "close to water" ] // 示例配置为忽略大小写+忽略重音符号匹配 let isContainsAnyKeyword = wordGroups.contains { word in targetString.range(of: word, options: [.caseInsensitive, .diacriticInsensitive]) != nil } print(isContainsAnyKeyword) // 输出结果:true
内容的提问来源于stack exchange,提问作者Mochi
相关产品推荐
相关产品推荐

