无法通过Kata Kana(日语)搜索1字节和2字节(ジ和ジ)

时间:2017-01-09 04:19:07

标签: ios swift

我有一个名字由Kata Kana 1字节(例如ジ),我用片假名搜索2字节ジ,但结果为零。 你知道如何将搜索文本从Kata假名2字节转换为1字节吗?请帮帮我。

我的代码:

   let filteredData = searchText.isEmpty ? employeeList : employeeList.filter({(data : employee) -> Bool in

      return data.emp_name_kana?.range(of: searchText, options: .caseInsensitive) != nil

     })

1 个答案:

答案 0 :(得分:1)

Kata Kana 1字节不是Unicode中"ジ"等字符的合适名称,最好将其称为Halfband Katakana,如Unicode standard中所示。每个这样的字符都不能用UTF-8中的1字节表示。

您可以在比较字符串之前应用一些转换:

let halfwidthKatakanaStr = "ザジズゼゾ"
let fullwidthSearchText = "ジ"

let found = halfwidthKatakanaStr.range(of: fullwidthSearchText.applyingTransform(.fullwidthToHalfwidth, reverse: false)!) != nil
print(found) //->true

(注意)以上代码适用于iOS9 +,macOS 10.11+。如果您需要定位某些较旧的平台,则可能需要调用经典CFStringTransform