Skip to content

@cndiv/core ​

检查和拆开 12 位区划码。纯函数,零依赖,不读数据库,也不知道这个码的地名。查名称用 @cndiv/reader。

npm · 包内完整说明(npm 页面同源):packages/core/README.md

安装 ​

bash
npm i @cndiv/core

只提供 ESM import。

函数 ​

非法输入返回 null 或 false,不抛错。码的切分见 12 位结构。

函数返回做什么
validateCode(code)boolean必须是 12 位数字,且前 2 位是合法省码。通过也不表示这个地方存在
normalizeCode(code)string | null去掉非数字并补零到 12 位。不检查省码,补完还要再 validateCode
getLevelFromCode(code)1–5 | null看末尾有多少个 0,判断是省、市、县、乡还是村
getProvinceCode(code)string | null前 2 位
getCityCode(code)string | null前 4 位
getCountyCode(code)string | null前 6 位
getTownshipCode(code)string | null前 9 位
getParentCode(code, childLevel)string | null上一级的 12 位码。childLevel 必须自己传入,函数不会先判级

常量:DIVISION_LEVEL(PROVINCE=1 … VILLAGE=5)、DIVISION_STATUS、SOURCE_TYPE、PROVINCE_CODES(只有省码到省名,例如 '11' → '北京市')。

例子 ​

ts
import { validateCode, getLevelFromCode, getParentCode, DIVISION_LEVEL } from '@cndiv/core';

validateCode('110101000000'); // true
validateCode('990101000000'); // false,99 不是省码
getLevelFromCode('110101000000'); // 3
getParentCode('110101000000', DIVISION_LEVEL.COUNTY); // '110100000000'

使用前 ​

  • 没有通用的「码 → 地名」。除了省级的 PROVINCE_CODES,名称都在数据包里。
  • 没有 getVillageCode。村就是完整的 12 位。
  • getParentCode 的第二个参数是这个码自己的层级。传错会得到错误的父码。先用 getLevelFromCode。
  • normalizeCode('990101') 会得到 '990101000000',但 validateCode 仍是 false。

数据来源于公开政府网站(国家统计局、民政部国家地名信息库),仅供学习与研究使用。代码以 MIT 许可。