Board logo

标题: [格式转换] [开源] 数字转汉字拼读 NumcnV1.0 [打印本页]

作者: yang871674823    时间: 2012-7-24 23:06     标题: [开源] 数字转汉字拼读 NumcnV1.0

    Number To Chinese v1.0

命令格式:  Numcn [参数]  [数字]

  参数:       -a  将数字转换为简写汉字
                -b  将数字转换为大写汉字

(1)例如执行:
  1. Numcn -b 100123.9
复制代码
将会输出:
  1. 壹拾萬零壹佰贰拾叁點玖
复制代码
(2)例如执行:
  1. Numcn -a -12300.21
复制代码
将会输出:
  1. 负一万二千三百点二一
复制代码
注:数字为绝对值小于1x10^12的浮点型数字



本程序采用Pascal语言编写,代码开源,修改或传播请保留代码标识!

如果把结果想储存到变量里面:
  1. @echo off
  2. ::转换参数
  3. set p=-a
  4. ::要转换的数字
  5. set num=10213.123
  6. for /f %%a in ('Numcn.exe %p% %num%') do set out=%%a
  7. echo %out%
  8. Pause
复制代码
没事搞着玩的,感觉实际用处不大

下载地址:http://bcn.bathome.net/s/tool/index.html?key=Numcn


Numcn.pas源代码:(Pascal)
  1. Program Number_To_Chinese;
  2. // By:Yangyawei  QQ:871674823
  3. // Bathmoe_ID: Yang871674823
  4. // 代码开源,修改或传播请保留此处!
  5. const w:array[1..4] of string =('',chr(58),chr(59),chr(60));
  6.       m:array[1..3] of string =('',chr(61),chr(62));
  7.       num:array[0..33] of string =('零','壹','贰','叁','肆','伍','陆','柒','捌','玖','拾','佰','仟','萬','億','點','負',
  8.                                    '零','一','二','三','四','五','六','七','八','九','十','百','千','万','亿','点','负');
  9. var ch,a,b,c,tmp,ans :string;
  10.     at: array[1..4] of char;
  11.     cho :boolean;
  12.     i,j,k,ef,t,chn :longint;
  13. begin
  14.         if Paramstr(1)<>'' then begin
  15.                 cho:=true;
  16.                 if (Paramstr(1)='-a')or(Paramstr(1)='-A') then cho:=true;
  17.                 if (Paramstr(1)='-b')or(Paramstr(1)='-B') then cho:=false;
  18.                 ch:=Paramstr(2);
  19.                 a:=''; b:=''; c:='';
  20.                 if ch[1]='-' then begin
  21.                         a:=chr(64);
  22.                         delete(ch,1,1);
  23.                 end;
  24.                 while (ch[1]='0')and(ch[2]<>'.')and(ch<>'') do delete(ch,1,1);        
  25.                 ef:=pos('.',ch);
  26.                 if ef<>0 then while ch[length(ch)]='0' do delete(ch,length(ch),1);
  27.                 ef:=pos('.',ch);
  28.                 if ef<>0 then begin
  29.                         c:=chr(63);
  30.                         for i:=ef+1 to length(ch) do
  31.                         c:=c+ch[i];
  32.                 end;
  33.                 if ef=0 then ef:=length(ch) else dec(ef);
  34.                 i:=ef;
  35.                 while i>0 do begin
  36.                         for j:=1 to 4 do at[j]:='-';
  37.                         tmp:='';
  38.                         for j:=1 to 4 do
  39.                                 if (i-j+1<=ef)and(i-j+1>0) then at[j]:=ch[i-j+1];
  40.                         j:=1;
  41.                         while (j<=4)and(at[j]<>'-') do begin
  42.                                 if at[j]<>'0' then
  43.                                         tmp:=at[j]+w[j]+tmp;
  44.                                 if at[j+1]='0' then tmp:='0'+tmp;
  45.                                 inc(j);
  46.                                 while at[j]='0' do inc(j);
  47.                         end;
  48.                         if tmp[length(tmp)]='0' then delete(tmp,length(tmp),1);
  49.                         i:=i-4;
  50.                         inc(t);
  51.                         if tmp<>'' then b:=tmp+m[t]+b else b:=tmp+b;
  52.                 end;
  53.                 if b='' then b:='0';
  54.                 ans:=a+b+c;
  55.                 if cho=true then chn:=31 else chn:=48;
  56.                 for i:=1 to length(ans) do write(num[ord(ans[i])-chn]);
  57.                
  58.         end else begin
  59.                 writeln;
  60.                 writeln('Number To Chinese v1.0':30);
  61.                 writeln('---------------------------------------');
  62.                 writeln(' 命令格式:Numcn [参数] [数字]');
  63.                 writeln('---------------------------------------');
  64.                 writeln(' 参数:':7,' -a  将数字转换为简写汉字':31);
  65.                 writeln(' ':8,'-b  将数字转换为大写汉字':30);
  66.                 writeln('---------------------------------------');
  67.                 writeln(' 例如执行:','Numcn -b 100123.9':25);
  68.                 writeln(' 将会输出:','壹拾萬零壹佰贰拾叁點玖':25);
  69.                 writeln('---------------------------------------');
  70.                 writeln(' 注:数字为绝对值小于1e12的浮点型数字');
  71.                 writeln('---------------------------------------');
  72.                 writeln('By:Yangyawei  QQ:871674823':38);
  73.         end;
  74. end.
复制代码
By:Yangyawei  QQ:871674823
作者: sz1121    时间: 2012-7-25 12:20

支持楼主!
作者: yang871674823    时间: 2012-8-13 21:14

没人顶吗?




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2