按字母顺序对包含UTF-8编码值的表进行排序。
2015-3-20 17:0:1
收藏:0
阅读:64
评论:0
我将字典条目存储在 Lua 表中,使用它作为数组。我想从 Lua 对条目进行排序,以便我可以添加新条目而无需自己移动到正确位置(很快就会变得非常繁琐)。但是,我面临几个问题:
- 许多单词包含非 ASCII 字符,这使得字符串的内置比较运算符不适合此任务(例如,它使_amputar_在_ámbito_之前出现)。
- 有来自各种语言(尽管都是西方语言)的单词,即西班牙语、德语和英语。这里的问题是,不同的语言可能有不同的字母顺序概念。由于主要语言是西班牙语,我想使用它的规则,但我不确定它是否适用于不包含在西班牙语字母表中的字符。
- 一些单词包含大写字母,甚至更糟的是以它们开头。例如,所有德语名词都以大写字母开头。由于内置的比较运算符,大写字母会出现在它们的小写同胞之前,这不是我想要的行为;我希望大写字母与它们的小写同胞完全相同。
例如,考虑以下表:
local entries =
{
'amputar',
'Volksgeist',
'ámbito'
}
这些条目应该按如下顺序排序:
ámbito
amputar
Volksgeist
但是,使用我的当前代码,输出是错误的:
local function compare_utf8_strings( o1 , o2 )
-- 使用内置的非 UTF-8 意识,非区域感知的字符串比较运算符
return o1 < o2
end
table.sort( entries , function ( a , b ) return compare_utf8_strings( a , b ) end )
for i, entry in ipairs(entries) do
print( entry )
end
输出为:
Volksgeist
amputar
ámbito
请使用以下代码并进行修改以满足我的要求:
local entries =
{
'amputar',
'Volksgeist',
'ámbito'
}
local function compare_utf8_strings( o1 , o2 )
-- 在这里修改以满足我的要求
end
table.sort( entries , function ( a , b ) return compare_utf8_strings( a , b ) end )
for i, entry in ipairs(entries) do
print( entry )
end
它应该输出:
ámbito
amputar
Volksgeist
作为额外的要求,此 Lua 代码全部位于 LuaTeX 中,该软件当前支持语言的 5.2 版本。至于外部库,我想可能可以使用它们。我是 Lua 阵营的新手,所以请原谅我可能犯的任何错误,并随时通知,以便我进行修正。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法