Unicode特殊字符转换

Unicode special characters conversion

我做了一个[String: [String]]类型的字典。值表示名称列表,而键表示所有这些名称的起始字母。知道了?

好的。现在我可以通过检测他们第一个字母的算法将名字附加到他们的键数组中。这就是我的问题开始的地方。我想将以特殊字符开头的名称(例如 "Ø" 放入 "O"-key-array.

像这样:

"Øder" -----> 检测首字母的算法 ------> ["0": ["Øder", ...]]

我的方法是将第一个字母转换为他们的 Unicode 并检查它是否是一个特殊字符并将其转换为他们相关的拉丁字母。

这是要走的路,还是我没有考虑过的更简单的解决方案?

这在 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 形式的函数。也许可以用这样的映射创建某种字典。