[Lua]姓名转ID
本帖最后由 suineg 于 2017-12-8 10:35 AM 编辑只支持纯名字转,各位有别的需要也可以在此Lua的基础上自己改自己想要的
1.支持复姓;
2.支持特殊读音;
3.已知WIZ口音修改;
只有一个核心方法:(用带类型的函数定义来看)
string Name.TrancelateName(string strName);
使用方法
1.require "本文件"
2. local strName = Name.TrancelateName("休莱格")
这里的strName就是拼音了,会返回"xiu laige"
如果不想要每次查询的输出,可以在方法里面的
因为直传lua失败,故压缩了一下
北大侠客行MUD,中国最好的MUD 不错,支持分享~ 本帖最后由 oolong 于 2017-9-6 07:02 PM 编辑
回复 2# sansouci
感觉会有bug
比如: 单于熊
可能 单于 熊
也可能 单 于熊
{:7_279:}
if string.find(name, i) then
--这个写法。。。 第三个字 单怎么办。。。
比如string.match(name,"^"..i) 不错,支持。
不对的可以自己再处理一下
比如
if name = "单于熊" then py = "shanyuxiong"
else py=Name.Translate(name)end 3.已知WIZ口音修改;
这句话亮了 回复 4# foolenough
我试过了发现写法效率太低了,我重新写了一下
Name = {};
Name.TrancelateName = function(name)
if Name.DoubleName then
return Name.DoubleName.." "..string.gsub(string.sub(name,5,10),'(..)',Name.table)
elseif Name.DoubleName then
return Name.DoubleName.." "..string.gsub(string.sub(name,3,10),'(..)',Name.table)
else
return string.gsub(string.sub(name,1,2),'(..)',Name.table) .." "..string.gsub(string.sub(name,3,10),'(..)',Name.table)
end
return ""
end 回复 3# oolong
单字开始只能是姓,
没有单于这个姓吧,
我姓的表格和名的表格是分开的 回复 6# oolong
写法问题,
我开始是没有复姓表写的一个,
这时候是不是复姓是根据名字长度判断的,
所以会有那种写法,
你这也行,
不过就可以表分开了,
复姓的表和单姓的表分开,
减少查找量 主要代码简洁执行效率高才好。
for多了 白白增加cpu消耗。
能1000行不要写2000行。
{:7_279:} 感谢楼主分享~~~~这样就方便多了。
页:
[1]
2