swift 3 - 搜索结果也带有变音符号
Posted
技术标签:
【中文标题】swift 3 - 搜索结果也带有变音符号【英文标题】:swift 3 - search result also with diacritics 【发布时间】:2017-01-24 08:19:38 【问题描述】:在我的应用程序中,我使用的搜索效果很好,但我需要建议。当我搜索没有变音符号的文本时,我不知道该怎么做,结果也带有变音符号。 示例:输入搜索holesovice,我需要找到holesovice和holešovice。
这是我的部分代码:
func filterContentForSearchText(_ searchText: String)
filteredERequests = requests.filter(( request : CityRequest) -> Bool in
return request.cityName.lowercased().contains(searchText.lowercased())
)
myTable.reloadData()
【问题讨论】:
【参考方案1】:您可以将range(of:, options:)
与变音符号不敏感选项一起使用
(并且可以选择不区分大小写)搜索。示例:
let list = ["holesovice", "holešovice"]
let searchTerm = "sovi"
let filtered = list.filter
$0.range(of: searchTerm, options: [.diacriticInsensitive, .caseInsensitive]) != nil
print(filtered) // ["holesovice", "holešovice"]
【讨论】:
感谢您的建议,但老实说我不明白,如何在我的代码中使用它... :( @Alien:我无法编译你的代码,因为它不是独立的 :) - 但它应该在你的闭包中类似于return request.cityName.range(of: searchText, options: [.diacriticInsensitive, .caseInsensitive]) != nil
。
我是驴 :D。非常感谢!【参考方案2】:
这是 Martin R 的解决方案,只是更容易使用。
将其复制到 Swift 文件中:
extension String
func contains(insensitive other: String, range: Range<String.Index>? = nil, locale: Locale? = nil) -> Bool
return self.range(of: other, options: [.diacriticInsensitive, .caseInsensitive], range: range, locale: locale) != nil
像这样使用它:
if "Música".contains(insensitive: "music")
print("hurray!")
【讨论】:
以上是关于swift 3 - 搜索结果也带有变音符号的主要内容,如果未能解决你的问题,请参考以下文章