Script

本类阅读TOP10

·一个简单的javascript菜单
·网站流量统计代码
·可编辑的 HTML JavaScript 表格控件 DataGrid II
·JavaScript通用库(一)
·在网页中控制wmplayer播放器
·层遇到select框时
·TYPEING TEST ON LINE 在线打字测试 Free Software Javascript (aiiiq)
·javascript表单之间的数据传递!
·让网页自动穿上外套
·搜索gb2312汉字在网上的频率

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
转换阿拉伯数字为汉字数码

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

    微软的Office Word 2000 中有一个 "插入->数字" 的功能, 可自由选择数字类型. 注意到有一种类型为 "一二三..." (或:"壹贰叁..."), 此功能在会计应用中应该较广. 本人琢磨几日, 经过多次修改, 编写了一个 JavaScript 版本的 "转换阿拉伯数字为汉字数码" 函数.
    本人第一次在 CSDN 上发表文章, 各位对此文章有何看法, 敬请提出, 不胜感激!
    以下是函数代码 (某些变量的叫法可能不大准确). 顺便说明, 主体函数是 changeDigitToHanzi(inString,isUpcase,times,errorCode), 其中参数 "inString" 要求 "只能含有数码字符, 并且不能以0开头", 此项处理既可置于主体函数内, 亦可置于主体函数外, 文中采用前者, 并提供另一函数 formatedDigit(inString) 实现之.
    调用举例:
    <script language="javascript">
        document.writeln
            (changeDigitToHanzi("13800138000",false,"个万亿兆","E"));
        document.writeln
            (changeDigitToHanzi("1380013800013800138",false,"个万亿兆","E"));
    </script>
    显示为:
        一百三十八亿〇一十三万八千
        E

/*----------------------------------------------------------------------------*/
/**
 * 转换阿拉伯数字为汉字数码
 * @author fpeez
 * @author fpeez@163.com
 * @version 1.0
*/


/**
 * 主体函数, 实现转换
 * @param inString    (String)输入的阿拉伯数字字符串(如: "13800138000")
 * @param isUpcase    (boolean)输出汉字数码大小写指示(如: false)
 * @param times       (String)阶数(如: "个万亿兆...")
 * @param errorCode   (String)错误时(溢出,空值,...)归零显示(如: "E")
 * @return ~errorCode
 * @return ~OUT       (String)转换后的汉字数码(如: "一百三十八亿〇一十三万八千")
*/
function changeDigitToHanzi(inString, isUpcase, times, errorCode)
{

    /** 输入字符串预处理, 亦可放到函数外执行 **/
    inString=formatedDigit(inString);

    /** 变量定义 **/
    var base,digit;                           // times: 阶数("个万亿兆...")
    if(isUpcase)
    {
        base="个拾佰仟";                      // base: 位数
        digit="零壹贰叁肆伍陆柒捌玖";         // digit: 汉字数码串(大写)
    }
    else
    {
        base="个十百千";
        digit="〇一二三四五六七八九";
    }

    var sLen,b,t,bLen;
    sLen=inString.length;                     // 输入字符串的长度
    bLen=base.length;                         // 位数的长度
    if(sLen>bLen*times.length || sLen<1)      // 溢出归零
        return errorCode;
    b=(sLen-1)%bLen;                          // 当前数码在base中的位置
    t=Math.floor((sLen-1)/bLen);              // 当前数码在times中的位置

    var i,at,zero;
    i=0;                                      // at某个位上的数码, i循环计数
    zero="";                                  // 保存数字中的0值

    var OUT;
    OUT="";                                   // 输出汉字数码

    /** 开始 **/
    at=inString.charCodeAt(i)-48;             // 处理"一十二"为"十二", 此时i=0
    if(at==1 && b==1)
    {
        OUT+=base.charAt(b--);
        i+=1;                                 // 此时, i=1
    }

    while(i<sLen)
    {
        at=inString.charCodeAt(i++)-48;
        if(b!=0)
        {
            if(at!=0)
            {
                OUT+=zero;
                zero="";
                OUT+=digit.charAt(at);
                OUT+=base.charAt(b);
            }
            else
                zero=digit.charAt(0);         // 此时, zero="零"或"〇"
            b--;
        }
        else
        {
            if(at!=0)
            {
                OUT+=zero;
                OUT+=digit.charAt(at);
            }
            zero="";
            if(t!=0) OUT+=times.charAt(t--);
            b=bLen-1;
        }
    }

    return OUT;  

}//END


/**
 * 处理输入字符串, 只保留数码字符(挑出其中的数码字符), 并除去开头的0
 * @param inString    (String)输入的字符串(如: " Z00138G00D138X000 S ")
 * @return ~OUT       (String)处理后字符串(如: "13800138000")
*/
function formatedDigit(inString)
{
    var i,at,OUT,atMin;
    OUT="";
    atMin=1;

    for(i=0;i<inString.length;i++)
    {
        at=inString.charCodeAt(i)-48;
        if(at>=atMin && at<=9)
        {
            OUT+=at;
            atMin=0;
        }
    }

    return OUT;

}//END
/*----------------------------------------------------------------------------*/




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有