js 将1234567890转换成一二三四五六七八九零

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 将1234567890转换成一二三四五六七八九零相关的知识,希望对你有一定的参考价值。

js 将1234567890转换成一二三四五六七八九零
例如1980-02-14 转化成一九八零年二月十四日

// 提供中文数字
var cnum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
function rp (n) 
    var s = '';
    n = '' + n; // 数字转为字符串
    for (var i = 0; i < n.length; i++) 
        s += cnum[parseInt(n.charAt(i))];
    
    return s;


var str = '1980-02-14';
var arr = str.split('-'); // 拆分字符串
for (var i = 0; i < arr.length; i++) 
    arr[i] = rp(parseInt(arr[i]));

str = arr[0] + '年' + arr[1] + '月' + arr[2] + '日';

追问

1980-12-20 一九八零年一二月二零日实际是一九八零年十二月二十日麻烦再给指教一下,谢谢

追答// 提供中文数字
var cnum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];
function rp (n) 
    var s = '';
    n = '' + n; // 数字转为字符串
    for (var i = 0; i < n.length; i++) 
        s += cnum[parseInt(n.charAt(i))];
    
    if (s.length == 2)  // 两位数的时候
        // 如果个位数是0的时候,令改成十
        if (s.charAt(1) == cnum[0]) 
            s = s.charAt(0) + cnum[10];
            // 如果是一十改成十
            if (s == cnum[1] + cnum[10]) 
                s = cnum[10]
            
         else if (s.charAt(0) == cnum[1]) 
            // 如果十位数是一的话改成十
            s = cnum[10] + s.charAt(1);
        
    
    return s;

 
var str = '1980-12-20';
var arr = str.split('-'); // 拆分字符串
for (var i = 0; i < arr.length; i++) 
    arr[i] = rp(parseInt(arr[i]));

str = arr[0] + '年' + arr[1] + '月' + arr[2] + '日';

追问

1980-12-21    一九八零年十二月二一日实际是一九八零年十二月二十一日
是不是在如下图去判断就行了

追答

... 没做这个判断,需要考虑的还真多呢。

// 提供中文数字
var cnum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];
function rp (n) 
    var s = '';
    n = '' + n; // 数字转为字符串
    for (var i = 0; i < n.length; i++) 
        s += cnum[parseInt(n.charAt(i))];
    
    if (s.length == 2)  // 两位数的时候
        // 十位数和个位数中间加十
        s = s.charAt(0) + cnum[10] + s.charAt(1);

        // 如果个位数是零的时候,删除个位数
        if (s.charAt(2) == cnum[0]) 
            s = s.substr(0, 2);
        

        // 如果十位数是一的话删除一
        if (s.charAt(0) == cnum[1]) 
            s = s.substr(1);
        
    
    return s;

  
var str = '1980-12-21';
var arr = str.split('-'); // 拆分字符串
for (var i = 0; i < arr.length; i++) 
    arr[i] = rp(parseInt(arr[i]));

str = arr[0] + '年' + arr[1] + '月' + arr[2] + '日';

参考技术A var testvalue = '1980-02-14'; var newvalue = ''; $.each(testvalue,function(i,e) if(e == '0') newvalue += '零'; else if(e == '1') newvalue += '一'; else if(e == '2') newvalue += '二'; else if(e == '3') newvalue += '三'; else if(e == '4') newvalue += '四'; else if(e == '5') newvalue += '五'; else if(e == '6') newvalue += '六'; else if(e == '7') newvalue += '七'; else if(e == '8') newvalue += '八'; else if(e == '9') newvalue += '九'; )

最后newvalue就是你要的

javascript小应用之汉字数字转阿拉伯数字

/**
* word2number
*/

function word2number(w)
var e = "零一二三四五六七八九";
var ew = ["十","百","千"];
var ej = ["万","亿"];
var rss = "^([" e ew.join("") "] " ej[1] ")?([" e ew.join("") "] " ej[0] ")?([" e ew.join("") "] )?$";
// ^([零一二三四五六七八九十百千] 亿)?([零一二三四五六七八九十百千] 万)?([零一二三四五六七八九十百千] )?$
var arr = new RegExp(rss).exec(w);
function foh(str)
str = new String(str);
var a=0;
if(str.indexOf(ew[0])==0)a=10;
str=str.replace(new RegExp(e.charAt(0),"g"),"");
if(new RegExp("([" e "])$").test(str))
a =e.indexOf(RegExp.$1);
if(new RegExp("([" e "])" ew[0]).test(str))
a =e.indexOf(RegExp.$1)*10;
if(new RegExp("([" e "])" ew[1]).test(str))
a =e.indexOf(RegExp.$1)*100;
if(new RegExp("([" e "])" ew[2]).test(str))
a =e.indexOf(RegExp.$1)*1000;
return a;

return foh(arr[1])*100000000 foh(arr[2])*10000 foh(arr[3]);


//Test
//==============

var str1 = "二十五";
var str2 = "五百零二";
var str3 = "四千五百";
var str4 = "七十亿零八百五十万四千五百零二";

console.log(str1, " : ", word2number(str1));
console.log(str2, " : ", word2number(str2));
console.log(str3, " : ", word2number(str3));
console.log(str4, " : ", word2number(str4));



//end

以上是关于js 将1234567890转换成一二三四五六七八九零的主要内容,如果未能解决你的问题,请参考以下文章

目录js测试

正则匹配混乱文本中的汽车上牌时间和公里数

Buffer对象的总结

javascript小应用之汉字数字转阿拉伯数字

MATLAB绘制罗盘时钟

sql语句模糊查询的问题?