在忽略变音符号或重音符号的同时搜索阿拉伯语文本
Search arabic text while ignoring diacritics or accents
当我使用带有元音字母(fatha、kasra 等)的阿拉伯语时,搜索功能工作正常。如何在 vowels/accents 不敏感的情况下搜索阿拉伯语文本?
例如,如果我搜索 واليوم 它应该显示 ووَالْيوْمِ 等所有结果
这是我使用元音(变音符号)的代码。
let arabicMatch = Dua.arabic.rangeOfString(searchText, options: NSStringCompareOptions.CaseInsensitiveSearch)
对于 swift 和 iOS 9.
NSStringCompareOptions
也有一个 DiacriticInsensitiveSearch
可以使用(与不区分大小写的方式相同)。
或者您可以对字符串进行规范化
extension String {
func normalizeArabic() -> String {
let newString = NSMutableString(string: self) as CFMutableString
CFStringTransform(newString, nil, kCFStringTransformLatinArabic, Bool(truncating: 0))
CFStringTransform(newString, nil, kCFStringTransformStripCombiningMarks, Bool(truncating: 0))
return newString as String
}}
当我使用带有元音字母(fatha、kasra 等)的阿拉伯语时,搜索功能工作正常。如何在 vowels/accents 不敏感的情况下搜索阿拉伯语文本?
例如,如果我搜索 واليوم 它应该显示 ووَالْيوْمِ 等所有结果
这是我使用元音(变音符号)的代码。
let arabicMatch = Dua.arabic.rangeOfString(searchText, options: NSStringCompareOptions.CaseInsensitiveSearch)
对于 swift 和 iOS 9.
NSStringCompareOptions
也有一个 DiacriticInsensitiveSearch
可以使用(与不区分大小写的方式相同)。
或者您可以对字符串进行规范化
extension String {
func normalizeArabic() -> String {
let newString = NSMutableString(string: self) as CFMutableString
CFStringTransform(newString, nil, kCFStringTransformLatinArabic, Bool(truncating: 0))
CFStringTransform(newString, nil, kCFStringTransformStripCombiningMarks, Bool(truncating: 0))
return newString as String
}}