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

C 語言中文數字轉阿拉伯數字:「一千零一元」→ 1001 核心演算法思路

     編輯:程式設計疑難解答

核心思路:模板匹配 + 缺位補零

建立標準數位模板:元、拾、佰、仟、萬、拾、佰、仟、億...

處理步驟

  1. 分詞:將輸入字串按中文數位字符切分 (如 一、千、零、一、元)。
  2. 對齊模板:從最低位 元 向高位對齊,缺失的數位 (如 拾、佰) **補 0**。
  3. 處理「零」:
    • 零元 → 保留個位 1 (如 一千零一 → 1001)。
    • 零拾、零佰 → 補 0 不輸出數字。
    • 連續 零 只補一個 0。
  4. 生成阿拉伯數字:將對齊後的數字序列合併為整數。

示例推演

輸入: "一千零一元"
模板: ... 仟 佰 拾 元
對齊: 一     零   一   (千位=1, 佰位=0, 拾位=0, 元位=1)
結果: 1 0 0 1 → 1001

關鍵難點

  • 大寫數字 (壹貳參...) 與小寫混用處理。
  • 萬/億 等高位單位的遞歸處理。
  • 小數部分 (角、分) 轉換邏輯。

工程建議

**不要手寫解析器**。生產環境請使用成熟庫:

  • Java: ChineseNumberUtil (Hutool)、NumberToCN。
  • Python: cn2an、chinese-number。
  • C++: 移植上述邏輯或調用 Python 腳本。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved