跳到主要内容

parseChineseNumber()

function parseChineseNumber(s): number;

Defined in: packages/utils/src/string/parseChineseNumber.ts:84

解析中文数字

采用「段级单位(万/亿)+ 段内单位(千/百/十)」两级模型, 而不是逐字符的十进制位移 —— 后者无法表达 十五万 这类段级乘法(UTL-015)。

支持字符集:

  • 数字:〇零一二两三四五六七八九、财务大写 壹贰叁肆伍陆柒捌玖、ASCII 0-9
  • 段内单位:十拾百佰千仟
  • 段级单位:万亿
  • 负号:以 负 或 - 开头

语义约定:

  • 连续数字字符按位组成一个数(10000 → 10000,15万 → 150000)
  • 段内单位必须严格递减(一百千、十十 抛错)
  • 同一个段级单位不得连续复用(一万二万 抛错;一万亿、一亿二千万 合法)
  • 末尾的裸数字落在个位(一万一 → 10001,一万一百一 → 10101)
  • 单位前无数字时数量为 1(十 → 10,万 → 10000)

Parameters​

ParameterTypeDescription
sstring待解析字符串,允许首尾空白

Returns​

number

解析出的数字

Throws​

空输入、含不支持字符、单位顺序非法,或结果超出安全整数范围

Example​

parseChineseNumber('十五万'); // 150000
parseChineseNumber('一亿二千万'); // 120000000
parseChineseNumber('负一百'); // -100