首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 數字日期轉中文大寫:正則替換實現「二〇一二年十二月三十一日」

     編輯:程式設計綜合問答

需求

將 2012年12月31日 轉為 二〇一二年十二月三十一日。

核心函數

function numToCN(str) {
    const cnNum = '〇一二三四五六七八九';
    // 處理 月/日 部分 (1-2 位數字)
    function toCN2(numStr) {
        const n = parseInt(numStr, 10);
        if (n >= 10 && n <= 19) return '十' + (n > 10 ? cnNum[n % 10] : '');
        if (n >= 20) return cnNum[Math.floor(n/10)] + '十' + (n%10 ? cnNum[n%10] : '');
        return cnNum[n];
    }
    // 替換 年 (4位) 月(1-2位) 日(1-2位)
    return str.replace(/(\d{4})年(\d{1,2})月(\d{1,2})日/, (_, y, m, d) =>
        y.split('').map(c => cnNum[c]).join('') + '年' +
        toCN2(m) + '月' +
        toCN2(d) + '日'
    );
}

console.log(numToCN('2012年12月31日')); // 二〇一二年十二月三十一日
console.log(numToCN('2023年1月5日'));   // 二〇二三年一月五日

原理說明

  1. 年份:逐位映射數字字符。
  2. 月/日:按中文讀音規則 (十、二十、十一等) 轉換。
  3. 正則捕獲組分離年月日,分別處理後拼接。

擴展:純數字字符串全轉

function allDigitsToCN(str) {
    return str.replace(/\d/g, c => '〇一二三四五六七八九'[c]);
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved