gpt4 book ai didi

regex - 按姓氏的字母顺序对字符串元胞数组进行排序

转载 作者:行者123 更新时间:2023-12-04 05:53:49 24 4
gpt4 key购买 nike

在 Matlab 中,我有一个像元数组:

names = {
'John Doe',
'Jane Watkins',
'Jeremy Jason Taylor',
'Roger Adrian'
}

我想对这些进行排序,以便 姓氏 按字母顺序出现。在我的例子中,结果是:
names_sorted = {
'Roger Adrian',
'John Doe',
'Jeremy Jason Taylor',
'Jane Watkins'
}

我知道这样做的不雅方式。例如,我可以在空间标记化,制作一个单独的 last_names元胞数组,对其进行排序,并将索引应用于我的原始数组。

我的问题是,有没有更好的方法?

因为肯定有人会提出您无法对数据库中的人名做出的假设列表,所以我向您保证,我的所有名字都是 "FIRST MIDDLE LAST""FIRST LAST" .我检查了。

最佳答案

如果所有名字的长度都相同,那么您可以使用 sortrows ,但在您的情况下,无论如何,这将需要填充和修改您的数组,以便您最好将其转换为 "LAST FIRST MIDDLE"申请前sort .幸运的是,有一个简单的正则表达式:

names = {'John Doe';'Roger Adrian';'John Fitzgerald Kennedy'};
names_rearranged = regexprep(names,'(.*) (\w*)$','$2 $1')
names_rearranged =
'Doe John'
'Adrian Roger'
'Kennedy John Fitzgerald'

[names_rearranged_sorted, idx_sorted] = sort(names_rearranged);

names_sorted = names(idx_sorted)
names_sorted =
'Roger Adrian'
'John Doe'
'John Fitzgerald Kennedy'

关于regex - 按姓氏的字母顺序对字符串元胞数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9757957/

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