SwiftUI iOS15 实现不区分大小写搜索有无更简便方案?
优化实现方案
完全有更简洁且鲁棒性更好的写法,你可以直接用Swift字符串原生提供的不区分大小写匹配API,不需要手动转换大小写,同时还能避免特殊语种大小写转换异常的问题,优化后代码如下:
var searchResults: [Array] { searchText.isEmpty ? filteredArray : filteredArray.filter { $0.name.localizedCaseInsensitiveContains(searchText) } }
可选扩展场景
- 如果你的搜索场景需要支持带重音字符的模糊匹配(比如输入
cafe匹配Café),可以替换为localizedStandardContains方法,它会同时忽略大小写和发音符号,更符合普通用户的搜索预期:$0.name.localizedStandardContains(searchText) - 如果你需要自定义更多匹配规则,也可以使用
range(of:options:)方法传入对应的参数,比如同时开启不区分大小写和不区分空格的匹配:$0.name.range(of: searchText, options: [.caseInsensitive, .whitespaceInsensitive]) != nil
内容的提问来源于stack exchange,提问作者RichStwrt
相关产品推荐
相关产品推荐

