You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅使用Swift 5+实现按名字与姓氏排序?

按姓氏排序Swift列表的实现方法

你当前的代码是按fullName整体字典序排序,要实现按姓氏排序,可以通过拆分姓名字符串提取姓氏来完成,具体实现如下:

@objc func handleSortByLastName() {
    let sortedList: [List] = self.viewModel.names.sorted {
        // 拆分姓名,提取最后一段作为姓氏(兼容中间名情况)
        let lastName0 = $0.fullName.components(separatedBy: .whitespaces).last ?? $0.fullName
        let lastName1 = $1.fullName.components(separatedBy: .whitespaces).last ?? $1.fullName
        
        // 先按姓氏排序,姓氏相同则按全名排序
        if lastName0 != lastName1 {
            return lastName0 < lastName1
        } else {
            return $0.fullName < $1.fullName
        }
    }
    replaceNewList(newList: sortedList)
}

细节说明

  • 用components(separatedBy: .whitespaces)拆分姓名,取最后一段作为姓氏,适配带中间名的姓名格式(比如"Mary Ann Davis"会提取"Davis"作为姓氏)
  • 当两个元素姓氏相同时,回退到按全名排序,避免同姓氏的条目排序混乱
  • 如果姓名没有空格(比如单字名),会直接用整个姓名作为排序依据,兼容特殊情况

内容的提问来源于stack exchange,提问作者TaeVon Lewis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 14:05:23