javascript数字转汉字中文数字

/*
    工具包
*/
var Utils={
    /*
        单位
    */
    units:‘个十百千万@#%亿^&~‘,
    /*
        字符
    */
    chars:‘零一二三四五六七八九‘,
    /*
        数字转中文
        @number {Integer} 形如123的数字
        @return {String} 返回转换成的形如 一百二十三 的字符串
    */
    numberToChinese:function(number){
        var a=(number+‘‘).split(‘‘),s=[],t=this;
        if(a.length>12){
            throw new Error(‘too big‘);
        }else{
            for(var i=0,j=a.length-1;i<=j;i++){
                if(j==1||j==5||j==9){//两位数 处理特殊的 1*
                    if(i==0){
                        if(a[i]!=‘1‘)s.push(t.chars.charAt(a[i]));
                    }else{
                        s.push(t.chars.charAt(a[i]));
                    }
                }else{
                    s.push(t.chars.charAt(a[i]));
                }
                if(i!=j){
                    s.push(t.units.charAt(j-i));
                }
            }
        }
        //return s;
        return s.join(‘‘).replace(/零([十百千万亿@#%^&~])/g,function(m,d,b){//优先处理 零百 零千 等
            b=t.units.indexOf(d);
            if(b!=-1){
                if(d==‘亿‘)return d;
                if(d==‘万‘)return d;
                if(a[j-b]==‘0‘)return ‘零‘
            }
            return ‘‘;
        }).replace(/零+/g,‘零‘).replace(/零([万亿])/g,function(m,b){// 零百 零千处理后 可能出现 零零相连的 再处理结尾为零的
            return b;
        }).replace(/亿[万千百]/g,‘亿‘).replace(/[零]$/,‘‘).replace(/[@#%^&~]/g,function(m){
            return {‘@‘:‘十‘,‘#‘:‘百‘,‘%‘:‘千‘,‘^‘:‘十‘,‘&‘:‘百‘,‘~‘:‘千‘}[m];
        }).replace(/([亿万])([一-九])/g,function(m,d,b,c){
            c=t.units.indexOf(d);
            if(c!=-1){
                if(a[j-c]==‘0‘)return d+‘零‘+b
            }
            return m;
        });
    }
};

使用方法:

<script>
Utils.numberToChinese(30000)
</script>

原文:http://www.codepearl.com/files/83.html

  

时间: 2024-08-25 18:41:22

javascript数字转汉字中文数字的相关文章

利用bootbox.js写二次确认提交(以及数字转为中文数字)

页面文件 <#-- 页头 --> <#assign currNav = "deposit"> <#assign title="网校充值"> <#include "/root/commons/header.ftl"> <div class="container"> <form id="depositForm" name="deposi

javascript 自己实现数字\字母和中文的混合排序方法 by FungLeo

javascript 自己实现数字\字母和中文的混合排序方法(纯粹研究,不实用) 前言 在上一篇博文<javascript 数组排序sort方法和自我实现排序方法的学习小结>中,我用自己的方法实现了数字数组的排序. 当然,实际运用中,我还是会使用sort方法更加方便.但是,我上一篇博文,仅仅是实现了数字排序,而srot方法默认可是能给字母实现排序的哦!而我的代码只能排序数字,看起来还是弱弱的. 所以,我得加上能排字母甚至中文的排序方法. 实现代码 $(function(){ var arr =

几个有用的javascript(日期比较,数字验证,数字和汉字长度计算)

1:日期大Js代码 Js代码   //人员失效职位日期是否小于组织失效日期 function perDateInvalidate(){ var flag = true; //组织失效日期 var orgDate = stringToTime(document.getElementById("orgDate").value); //人员失效日期 var personDate = stringToTime(document.getElementById("personDate&q

JavaScript 中怎样判断文本框只能输出英文字母、汉字和数字,不能输入特殊字符!

JS-只能输入中文和英文2008-11-08 10:17在js中用正则表达式对象(RegExp)判断中文 ^[\u0391-\uFFE5]+$英文 ^[A-Za-z]+$中文和英文/^[\u0391-\uFFE5A-Za-z]+$/ js正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码 1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpa

SSRS 实现数字金额转换为中文大写汉字

比如: 金额=49,701,120.00,将其转换为"肆仟玖佰柒拾万壹仟壹佰贰拾元整":金额 289,546.52 ,转换为 "贰拾捌万玖仟伍佰肆拾陆元伍角贰分". 解决方法:添加VB的转换函数写在CODE里,然后在表达式里调用自定义函数转换. 如:增加两个占位符表达式,如小数位为0时表达式2添加"整", 表达式1=Code.GetCnString(Fields!Amount.Value) 表达式2=IIF(Fields!Amount.Value

javascript 中文数字阿拉伯数字转换类 Nzh

之前工作中碰到了数字转中文的情景,网上找的现成方法或多或少合我口味,最后还是自已写了一个. 现在整理了一下,补充了繁体,自定义字符,以及反函数(中文数字转阿拉伯数字) 现在发布出来,希望能合大家的口味. demo: http://cnwhy.github.io/nzh/demo/index.html 项目地址: https://github.com/cnwhy/nzh 欢迎push Nzh Nzh适用于开发过程中需要将数字转换为中文的场景 以字符串的方式转换,解决超大数及浮点数等问题,请自行对原

阿拉伯数字转中文(汉字)数字

/** * 数字工具类型 * @author rubekid * */ public class NumberUtils { private final static String[] GROUP_UNITS = {"", "万", "亿", "兆"}; private final static String[] BASE_UNITS = { "", "十", "百"

数字货币转换为中文货币

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

JS常用正则表达式和JS控制输入框输入限制(数字、汉字、字符)

验证数字:^[0-9]*$验证n位的数字:^\d{n}$验证至少n位数字:^\d{n,}$验证m-n位的数字:^\d{m,n}$验证零和非零开头的数字:^(0|[1-9][0-9]*)$验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$验证非零的正整数:^\+?[1-9][0-9]*$验证非零的负整数:^\-[1-9][0-9]*$验证非负整数(正整数 + 0) ^\d+$验证非正整数(负整数 + 0) ^((