我制作了一个[String: [String]]
类型的字典。值表示名称列表,而键表示所有这些名称的起始字母。得到它了?
好。现在,我可以通过检测其首字母的算法将名称附加到其键阵列。这是我的问题开始的地方。我想将以特殊字符开头的名称"Ø"
放入"O"-key-array
。
这样的事情:
"Øder"
----->检测第一个字母的算法------> ["0": ["Øder", ...]]
我的方法是将第一个字母转换为Unicode并检查它是否是特殊字符并将其转换为相关的拉丁字母。
这是要走的路,还是我不考虑的简单解决方案?
答案 0 :(得分:0)
这在Swift中很有效:
let names = ["test", "another", "two", "øder"]
let index = names.reduce([Character: [String]]()) {
(var initial: [Character: [String]], current: String) -> [Character: [String]] in
if let first = current.characters.first
where initial[first]?.append(current) == nil {
initial[first] = [current]
}
return initial
}
print(index) // -> ["ø": ["øder"], "t": ["test", "two"], "a": ["another"]]
不幸的是,我无法找到任何将unicode字符转换为更简单的ASCII形式的函数。也许可以使用这样的映射创建某种字典。