gpt4 book ai didi

ios - 使用 Swift 对日语字符进行排序

转载 作者:可可西里 更新时间:2023-11-01 01:50:45 24 4
gpt4 key购买 nike

我有以下行按名称对项目列表进行排序:

let nameSort = NSSortDescriptor(key: "item.itemName", ascending: true, selector: #selector(NSString.caseInsensitiveCompare))

这适用于英文名称。但对于日语,它会将平假名、片假名和汉字分开排序,而不是交织在一起。我注意到 iOS 联系人应用程序正确排序并且没有划分三个单独的脚本。想知道如何实现这一目标?

最佳答案

您可以使用 localizedComparelocalizedCaseInsensitiveCompare 来解决平假名 v 片假名排序问题,但不能解决汉字问题。

您将其与通讯录应用进行比较:不幸的是,通讯录实际上是 captures what you enter phonetically ,将注音假名存储在单独的 phoneticFamilyName 中(例如,Tanaka 为 タナカ),而最终的汉字(例如,田中)则存储在 familyName 中。这样做是因为一旦输入被翻译成汉字,所有的读法都被映射到一个单一的 unicode 序列。例如。无论您是通过 チュウ 还是 なか(取决于您输入的单词)输入中,生成的中字符仍然只是 unicode 0x4e2d。如果您想知道如何找到该字符,则需要将拼音保存在单独的字段中。

最重要的是,让排序算法找出某个随机汉字序列的注音假名是一个非常重要的问题,因为它无法知道哪个在读音上kun yominanori 适用于任何给定的汉字。这就是联系人应用程序将其存储在单独字段中的原因。有CFStringTransform假名和罗马字之间的转换,但不是汉字。

理论上似乎可以对字符串进行一些自然语言处理和/或字典解析,但我认为这需要相当大的计算量,而且在排序例程中尝试即时执行这些操作可能不切实际。我建议将注音假名存储在单独的字段中,就像联系人框架那样。

关于ios - 使用 Swift 对日语字符进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54375698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com