数字转换成英文数字

解决方案 »

  1.   

    我只会替换的形式
    1: one 
    2: two
    *****
    10 : ten
    其它不会
    关注,,
      

  2.   

    function convert(lcnum:string):string;   
      type   
          arr=array[1..9,1..3]   of   string;   
      var   
          num:arr;   
          lclast,temp:string;   
          i,code,len,lntimes,lnhundred,lnten,lnone,lntempnum:integer;   
      begin   
          lntimes:=0;   
          lclast:='';   
          num[1,1]:='ONE';   
          num[1,2]:='ELEVEN';   
          num[1,3]:='TEN';   
          num[2,1]:='TWO';   
          num[2,2]:='TWELVE';   
          num[2,3]:='TWENTY';   
          num[3,1]:='THREE';   
          num[3,2]:='THIRTEEN';   
          num[3,3]:='THIRTY';   
          num[4,1]:='FOUR';   
          num[4,2]:='FOURTEEN';   
          num[4,3]:='FORTY';   
          num[5,1]:='FIVE';   
          num[5,2]:='FIFTEEN';   
          num[5,3]:='FIFTY';   
          num[6,1]:='SIX';   
          num[6,2]:='SIXTEEN';   
          num[6,3]:='SIXTY';   
          num[7,1]:='SEVEN';   
          num[7,2]:='SEVENTEEN';   
          num[7,3]:='SEVENTY';   
          num[8,1]:='EIGHT';   
          num[8,2]:='EIGHTEEN';   
          num[8,3]:='EIGHTY';   
          num[9,1]:='NINE';   
          num[9,2]:='NINETEEN';   
          num[9,3]:='NINETY';   
          len:=length(lcnum);   
              for   i:=1   to   12-len   do   
                      lcnum:=concat('0',lcnum);   
              for   i:=0   to   3   do   
                      begin   
                          temp:=copy(lcnum,1+3*i,3);   
                          val(temp,lntempnum,code);   
                          lntimes:=lntimes+1;   
                          if   lntempnum=0   then   
                          continue;   
                          lnhundred:=lntempnum   div   100;   
                          lnten:=(lntempnum   div   10)   mod   10;   
                          lnone:=lntempnum   mod   10;   
                          if   lnhundred<>0   then   
                                lclast:=concat(lclast,'   ',num[lnhundred,1],'   HUNDRED');   
                          if   (length(trim(lclast))<>0)   and   (lnhundred<>0)   then   
                                lclast:=concat(lclast,'   AND');   
                        if   (lntimes=4)   and   (lnhundred=0)   and   (length(trim(lclast))<>0)   then   
                                lclast:=concat(lclast,'   AND');   
                          case   lnten   of   
                                0:   
                                    begin   
                                        if   lnone<>0   then   
                                              lclast:=concat(lclast,'   ',num[lnone,1])   
                                        else   
                                              begin   
                                                  temp:=copy(lclast,length(lclast)-2,3);   
                                                  if   temp='AND'   then   
                                                        lclast:=copy(lclast,1,length(lclast)-3);   
                                              end;//case   0   else   
                                    end;//case   0   
                                1:   
                                    begin   
                                        if   lnone<>0   then   
                                              lclast:=concat(lclast,'   ',num[lnone,2])   
                                        else   
                                              lclast:=concat(lclast,'   ',num[1,3]);   
                                    end;//case   1   
                                else   
                                    if   lnone<>0   then   
                                          lclast:=concat(lclast,'   ',num[lnten,3],'-',num[lnone,1])   
                                    else   
                                          lclast:=concat(lclast,'   ',num[lnten,3]);   
                          end;//case1   
                          case   lntimes   of   
                                    1:lclast:=concat(lclast,'   BILLION');   
                                    2:lclast:=concat(lclast,'   MILLION');   
                                    3:lclast:=concat(lclast,'   THOUSAND');   
                          end;//case2   
                      end;//for   
                            result:=lclast;   
        end;