dgda 发表于 2010-5-19 11:24:27

mush新手求助

local sqian="三千七百八十四万六千一百二十五"
local milion=string.find(sqian,"万")
local thousa=string.find(sqian,"千")
local hundre=string.find(sqian,"百")
local teens=string.find(sqian,"十")
if milion~=nil then
    if thousa~=nil then
      if thousa<milion then
            sqian=string.gsub(sqian,"千","*10000000+",1)
            sqian=string.gsub(sqian,"千","*1000+")
      end
      if hundre~=nil then
            if hundre<milion then
                sqian=string.gsub(sqian,"百","*1000000+",1)
                sqian=string.gsub(sqian,"百","*100+")
            end
                if teens~=nil then
                  if teens<milion then
                        sqian=string.gsub(sqian,"十","*100000+",1)
                        sqian=string.gsub(sqian,"十","*10+")
                  end
                end
      end
    end
end
sqian=string.gsub(sqian,"万","*10000+")
sqian=string.gsub(sqian,"千","*1000+")
sqian=string.gsub(sqian,"百","*100+")
sqian=string.gsub(sqian,"十","*10+")
sqian=string.gsub(sqian,"九","9")
sqian=string.gsub(sqian,"八","8")
sqian=string.gsub(sqian,"七","7")
sqian=string.gsub(sqian,"六","6")
sqian=string.gsub(sqian,"五","5")
sqian=string.gsub(sqian,"四","4")
sqian=string.gsub(sqian,"三","3")
sqian=string.gsub(sqian,"二","2")
sqian=string.gsub(sqian,"一","1")
sqian=string.gsub(sqian,"零","")
print (sqian)如上,想把中文大写转成可运算的数字,但我写到这一步就写不下去了,还望高手老人指点,感谢

[ 本帖最后由 dgda 于 2010-5-19 11:50 AM 编辑 ]

lzkd 发表于 2010-5-19 11:36:09

写这么一大堆,好象不错嘛。
另外,磨这个不是我擅长的,我是文科生出身,对各种算法,那叫相当的弱。

不过,我记得好象论坛里有人给出过一个这个功能的半成品。
如果楼主非要自己写出来,呼唤ddid来给你帮助吧。。。

dgda 发表于 2010-5-19 11:49:55

原帖由 lzkd 于 2010-5-19 11:36 AM 发表 http://pkuxkx.com/forum/images/common/back.gif
写这么一大堆,好象不错嘛。
另外,磨这个不是我擅长的,我是文科生出身,对各种算法,那叫相当的弱。

不过,我记得好象论坛里有人给出过一个这个功能的半成品。
如果楼主非要自己写出来,呼唤ddid来给你帮助吧 ...

谢谢,呵呵,才看lua和mush两天,感觉是不错,除了没有zmud那么方便的automap,其它的,还挺好的

还请给新人指点啊,ddid在吗?chat* beep ddid

上面我写的,只能--->sqian="3*10000000+7*1000000+8*100000+4*10000+6*1000+1*100+2*10+5"

怎么才能把sqian转成数字啊?谢谢了

[ 本帖最后由 dgda 于 2010-5-19 11:51 AM 编辑 ]

myu 发表于 2010-5-19 11:57:36

你这个只怕要换思路了,你这样得到的是代表一个表达式的字符串,据我所知,lua是没有办法将2*1000+3*100+3这种字符串表达式直接运算成数值结果的。

myu 发表于 2010-5-19 12:02:07

举个例吧,你得这样,先把汉字数字转换成3万6千之类的格式,然后
local num=0
        string.gsub(t1,"%d万",function(w) num=num+string.sub(w,1,1) end)
      num=num*10000
        string.gsub(t2,"%d千",function(w) num=num+string.sub(w,1,1)*1000 end)
当然上面这个是非常之简化了的。

see,see,see?ttk_11

maper 发表于 2010-5-19 12:09:39

http://www.pkuxkx.com/forum/viewthread.php?tid=11586&highlight=%D7%AA

maper 发表于 2010-5-19 12:11:26

http://pkuxkx.com/forum/viewthread.php?tid=1173&extra=page%3D&page=1

lzkd 发表于 2010-5-19 12:11:56

原帖由 dgda 于 2010-5-19 11:49 AM 发表 http://www.pkuxkx.com/forum/images/common/back.gif


谢谢,呵呵,才看lua和mush两天,感觉是不错,除了没有zmud那么方便的automap,其它的,还挺好的

还请给新人指点啊,ddid在吗?chat* beep ddid

上面我写的,只能--->sqian="3*10000000+7*1000000+8*10000 ...

你这个不是已经出来了吗?最后再差一点就是。
你把那个算式整成
sqian = tonumber(sqian1)*tonumber(sqian2) + tonumber(sqian3)*tonumber(sqian4) + ......

就可以了

lzkd 发表于 2010-5-19 12:13:00

原帖由 maper 于 2010-5-19 12:11 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
http://pkuxkx.com/forum/viewthread.php?tid=1173&extra=page%3D&page=1

wa!!!!
把maper大神勾出来了。。嘿嘿

lzkd 发表于 2010-5-19 12:13:54

另外,lua很奇怪的。
两个象数值的变量相加,不能自动计算,非得转换成数值型的才可以。。。
页: [1] 2
查看完整版本: mush新手求助