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

之前工作中碰到了数字转中文的情景,网上找的现成方法或多或少合我口味,最后还是自已写了一个.

现在整理了一下,补充了繁体,自定义字符,以及反函数(中文数字转阿拉伯数字)

现在发布出来,希望能合大家的口味.

demo: http://cnwhy.github.io/nzh/demo/index.html

项目地址: https://github.com/cnwhy/nzh 欢迎push

Nzh

Nzh适用于开发过程中需要将数字转换为中文的场景 以字符串的方式转换,解决超大数及浮点数等问题,请自行对原数据进行四舍五入等操作.

install

npm install nzh
bower install nzh

引用

var Nzh = require("nzh");

demo

var nzhcn = Nzh.cn;   //使用简体中文,另外有 Nzh.hk -- 繁体中文  

nzhcn.encodeS(100111)         //转中文小写 >> 十万零一百一十一
nzhcn.encodeB(100111)         //转中文大写 >> 壹拾万零壹佰壹拾壹
nzhcn.toMoney(‘100111.11‘)    //转中文金额 >> 人民币壹拾万零壹佰壹拾壹元壹角壹分

关于十的口语化

//小写默认启用
nzhcn.encodeS(13.5)        //十三点五
nzhcn.encodeS(13.5,fasle)  //一十三点五

//大写默人关闭
nzhcn.encodeB(13.5)        //壹拾叁點伍
nzhcn.encodeB(13.5,true)   //拾叁點伍

关于关于超级大数

//默认未引入"兆 京"等单位,超"千万亿"位时,默认以争议教少的"万万亿"为单位
nzhcn.encodeS(1e16)                   //一万万亿
nzhcn.encodeS(1e16,null,false)        //一亿亿

中文转阿拉伯数字

nzhcn.decodeS(str) //小写转数字 十万零一百一十一 =>> 100111
nzhcn.decodeB(str) //大写转数字 壹拾万零壹佰壹拾壹 =>> 100111

自定义

var custom = new Nzh({
    ch: ‘〇壹贰叁肆伍陆柒捌玖‘ //数字字符
    ,ch_u: ‘个十百千万亿兆京‘ //数位单位字符 万以下10进制,万以上万进制,个位不能省略
    ,other: ‘负点‘         //负数,小数字符
    ,m_t: ‘人民币‘         //金额前缀
    ,m_z: ‘正‘            //无小数后缀
    ,m_u: ‘元角分厘‘       //金额单位
});
custom.encode("10001000000000000") //壹京〇壹兆
custom.decode("壹兆")               //1000000000000
custom.toMoney("1.234")            //人民币壹元贰角叁分肆厘
时间: 2024-11-10 07:46:42

javascript 中文数字阿拉伯数字转换类 Nzh的相关文章

阿拉伯数字与中文数字的转换----------相互转化

今天继续看<算法的乐趣>,学习了阿拉伯数字与中文数字的转化. 汉字用零一二三四五六七八九作为基本计数,与阿拉伯数字靠数字偏移位置的权位不一样.中文数字是才有"数字+权位"的方式组成数字,比方百,千,万. 中文数字每一个数字后都会跟上一个权位.权位就是数字的量值,相当于阿拉伯数字的数位. 中文计数以万为小节,万下面没有节权,万之上是亿为节权. 中文另一个特点是多变的"零",大概总结为三个规则: 1.以10000为小节.小节的结尾即使是0,也不使用"

trie树信息抽取之中文数字抽取

这一章讲一下利用trie树对中文数字抽取的算法.trie树是一个非常有用的数据结构,可以应用于大部分文本信息抽取/转换之中,后续会开一个系列,对我在实践中摸索出来的各种抽取算法讲开来.比如中文时间抽取,地址抽取等. Trie树 trie树又称为前缀树,索引树,字典树.用来对字符串进行索引,每个节点存储一个字符,每个叶子节点代表一个字符串,即从根到它的路径上所有字符的序列. 这个结构有什么优点呢?可以快速的匹配一个目标字符串中存在的单词.换句话说,我有一个字典,是单词的集合,我把字典中所有的单词存

中文数字转换成阿拉伯数字(一千二百三十四万五千六百七十八--&gt;12345678)

昨天老大问我又没有写过中文数字转换成阿拉伯数字,我说没有,我说那应该简单啊,就是将中文对应的数字换成阿拉伯数字就好了啊,比如一就换成1,二就换成2…十换成10.可是那么问题来了…… 一十二呢…不能是1102吧…这不就坑爹了吗?一百万呢………所有我苦苦思索,花费了我差不多半天的时间,终于写出了下面的程序. 1 public static void main(String[] args){ 2 3 Map<Character, String> numberMap = new HashMap<

oracle改进之将阿拉伯数字转换成中文数字

本博客是自己在学习和工作途中的积累与总结. 将阿拉伯数字转换成中文汉字,方法自定义函数 create or replace function formate(val in number) return varchar2 is res varchar2(6); begin if val=1 then res:='一'; elsif val=2 then res:='二'; elsif val=3 then res:='三'; elsif val=4 then res:='四'; elsif val

中文数字转阿拉伯数字

package com.test.utils.utils; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ChineseNumber2ALB { public static void main(String[] args) { St

阿拉伯数字转换成中文大写

package Demo;public class Money{ public static void main(String args[]) { Money mon = new Money(); System.out.println(mon.change("124")); } //把"1"转化成1时用下标找TOBIG[1]就是对应的 private static final String[] TOBIG = new String[] { "零"

简单中文数字转阿拉伯数字

#coding:cp936 __author__ = 'JYC103' num_dic={'一':1,'二':2,'三':3,'四':4,'五':5,'六':6,'七':7,'八':8,'九':9,'零':0} put_num=raw_input('输入中文数字:') #print put_num for key in num_dic:     #print key,num_dic[key]     if put_num == key:         print put_num,'对应的阿拉伯

阿拉伯数字转中文数字

package algorithm.other; /** * 阿拉伯数字转中文数字 * @author NINGUANG * */public class ChineseNum{ private static String[] chnNumChar = { "零", "一", "二", "三", "四", "五", "六", "七", "

【iOS开发系列】将阿拉伯数字转换为中文数字

/** * 将阿拉伯数字转换为中文数字 */ +(NSString *)translationArabicNum:(NSInteger)arabicNum { NSString *arabicNumStr = [NSString stringWithFormat:@"%ld",(long)arabicNum]; NSArray *arabicNumeralsArray = @[@"1",@"2",@"3",@"4&q