使用德语本地化对字符串数组进行快速排序

问题描述 投票:0回答:1

我正在按字母顺序(前两个字母)对表格视图的字符串数组进行排序,但不知道如何使用德语本地化进行排序。

在 xcode 中将本地化更改为德语时,排序功能确实会将第二个字母的所有“元音变音”放在第二个字母的末尾。

这是输出:

排序名称数组 [“埃伯斯巴赫,德克”,“埃斯曼,克里斯托夫”,“法尔海姆,西尔克”,“福斯特,托马斯”,“弗鲁特恩,汉斯博士”,“福斯特,教授法尔辛博士”,“加迪亚,克里斯蒂安”,“马里奥·格吕内尔特”、“克里斯汀·亨尼格”、“伊冯娜·霍斯费尔特”、“卡蒂·兰格”、“格奥尔格·利布施瓦格”、“斯特凡·洛斯”、“沃尔克博士路德维希”、“妮可·米凯利斯”、“ Neißhardt,Claudia”、“Niepel、Mandy”、“Nützer、Jens”、“Patientenaufnahme D”、“Patientenaufnahme FR/C”、“Patientenaufnahme Ortho/BV”、“Qasem,Mohammed”、“Raschke、Steffen”、“Riebel” ,海克”,“里德尔,西蒙娜”,“施赖纳,德克”,“塞德尔,安特耶”,“西勒,克里斯蒂安”,“祖尔克,卡蒂博士”]

排序功能是这样的:

var bez = [String]()

let sortedBez = bez.sorted(by: {
            $0.lowercased() < $1.lowercased() } )
        

但是在排序输出数组中“Förster, Prof. Dr. Farsin”(排序数组的元素 5)应该位于“Foerster, Thomas”(作为排序数组的元素 4)之后。

我怎样才能实现这个目标?我已经尝试将 xcode 的本地化设置更改为德语,但没有帮助。

arrays swift sorting localization
1个回答
0
投票

您可以将

String.Comparator
传递给
sort
:

bez.sorted(using: String.Comparator(
    options: .caseInsensitive/*, locale: Locale(identifier: "de")*/
))

如果没有

locale:
参数,这已经将“Fö”排序在“Foe”之后。如果您特别想使用德语语言环境的排序规则,您也可以添加
locale:
参数。

© www.soinside.com 2019 - 2024. All rights reserved.