写个perl 的发出来ttk_12use strict;
my %point = (
"万" => 5,
"亿" => 9
);
my %base = (
"千" => 4,
"百" => 3,
"十" => 2
);
my %num = (
"零" => 0,
"一" => 1,
"二" => 2,
"三" => 3,
"四" => 4,
"五" => 5,
"六" => 6,
"七" => 7,
"八" => 8,
"九" => 9
);
my $utf8CharBit = 3;
my @digits = ();
my $number = "三千七百八十四万六千一百二十五";
print getLessThanOneHundredMillionNumber("一万三千零四十五");
# 比一亿小
sub getLessThanOneHundredMillionNumber{
my ($chineseNumber) = @_;
my ($first, $second) = split "万", $chineseNumber;
my @digits;
my $firstDigits = getLessThanTenThousandNumber($first);
push @digits, @$firstDigits;
my $secondDigits = getLessThanTenThousandNumber($second);
push @digits, @$secondDigits;
return (sprintf "%d" x 8 . "\n", @digits) + 0;
}
# 比一千小
sub getLessThanTenThousandNumber{
my ($chineseNumber) = @_;
my @digits;
my $thuIndex = index $chineseNumber, "千";
my $hunIndex = index $chineseNumber, "百";
my $tenIndex = index $chineseNumber, "十";
push @digits, ($thuIndex > 0) ? $num{substr $chineseNumber, 0, $thuIndex} : 0;
push @digits, ($hunIndex > 0) ? $num{substr $chineseNumber, $hunIndex - $utf8CharBit, $utf8CharBit} : 0;
push @digits, ($tenIndex > 0) ? $num{substr $chineseNumber, $tenIndex - $utf8CharBit, $utf8CharBit} : 0;
push @digits, $num{substr $chineseNumber, length ($chineseNumber) - $utf8CharBit};
#printf "%d" x 4 . "\n", @digits;
return \@digits;
} 用sauron的那个就对了,写的既简单又好用 原帖由 lzkd 于 2010-5-19 12:11 PM 发表 http://pkuxkx.com/forum/images/common/back.gif
你这个不是已经出来了吗?最后再差一点就是。
你把那个算式整成
sqian = tonumber(sqian1)*tonumber(sqian2) + tonumber(sqian3)*tonumber(sqian4) + ......
就可以了
我就是这个想法,可我不会弄
你提的sqian1一直到sqian...是怎么来的啊? 上面我写的,只能--->sqian="3*10000000+7*1000000+8*100000+4*10000+6*1000+1*100+2*10+5"
就是把你这个,拼出来的时候,加上那个函数,不就可以了? 看见n多人show,我也有点心痒了,等我回家也show一个。嘻。。。。看起来,很好玩的样子 我觉得用462都可以写得出来…… 这个是从helllua里扒出来的.看大家都发,我也手痒,发一个玩玩
这个代码,不负责解答,看的明白就明白,看不明白就不明白
_nums={}
_nums["一"]=1
_nums["二"]=2
_nums["三"]=3
_nums["四"]=4
_nums["五"]=5
_nums["六"]=6
_nums["七"]=7
_nums["八"]=8
_nums["九"]=9
ctonum=function(str)
if (#str % 2) ==1 then
return 0
end
result=0
wan=1
unit=1
for i=#str -2 ,0,-2 do
char=string.sub(str,i+1,i+2)
if (char=="十") then
unit=10*wan
if (i==0) then
result=result+unit
elseif _nums==nil then
result=result+unit
end
elseif (char=="百") then
unit=100*wan
elseif (char=="千") then
unit=1000*wan
elseif (char=="万") then
unit=10000*wan
wan=10000
else
if _nums~=nil then
result=result+_nums*unit
end
end
end
return result
end
itemnumre=rex.new("(((零|一|二|三|四|五|六|七|八|九|十|百|千|万)*)(位|支|颗|个|把|只|粒|张|枚|件|柄|根|块|文|两|碗|滴)){0,1}(.*)")
lzkd这个狠啊,呵呵,看不是太懂,慢慢看了 原帖由 dgda 于 2010-5-19 06:05 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
lzkd这个狠啊,呵呵,看不是太懂,慢慢看了
主要是我自己也不懂,呵呵,见笑了.
不过,算法这个东西,我还没本事说清楚,偶是文科生来的 论坛里搜索到了mapper以前弄的lua的代码了
太强了,搞了半天,我做了个无用功,呵呵
mapper的代码可用,可我怎么把算出来的数字传回mush用呢?
页:
1
[2]