gpt4 book ai didi

ruby - 如何根据非标准字母表对字符串数组进行排序?

转载 作者:数据小太阳 更新时间:2023-10-29 09:00:59 25 4
gpt4 key购买 nike

我正在尝试按字母顺序对一组世界语短语进行排序。有没有一种方法可以使用 sort_by 来完成此操作?

我正在根据世界语字母表中的索引检查字符串的每个字符,每个增加的索引在排序优先级中降低一步:

  esp_alph = " abcĉdefgĝhĥijĵklmnoprsŝtuŭvz"
arr.sort_by {|string|
[esp_alph.index(string[0]),
esp_alph.index(string[1]),
esp_alph.index(string[2]),
esp_alph.index(string[3])]}

但是,这不是一个可扩展的解决方案,如果我的条件多于字符串中的字符,它就会中断。根据我的字符串长度,我似乎正处于循环的风口浪尖,但我无法弄清楚如何在没有语法错误的情况下实现它。还是有更好的方法来解决这个问题?

最佳答案

只需将世界语字母表中的所有字符替换为 ASCII 表中的一些字符,以便世界语字母顺序与 ASCII 顺序匹配。

假设世界语字母表按照您给定的顺序排列,我假设它们的顺序是这样的:

esp_alph = " abcĉdefgĝhĥijĵklmnoprsŝtuŭvz"

并取出相同长度的ASCII字符表的任意部分(注意\\是单个字符):

ascii = "@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\"

ascii = "@-\\"

然后,你可以简单地做:

arr.sort_by{|string| string.tr(esp_alph, ascii)}

在这里,trgsub 快,而且我认为它的扩展性足够了。

关于ruby - 如何根据非标准字母表对字符串数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35778202/

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