分享
 
 
 

转换阿拉伯数字为汉字数码

王朝html/css/js·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

微软的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

/*----------------------------------------------------------------------------*/

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有