介绍
在前端开发中,经常会涉及到数字的处理,而且数字的格式有时候十分复杂。比如说,有一个字符串 3.5 million
,我们希望将它转化为数字 3500000。在这个情况下,我们就需要用到一个 npm 包—— numerizer。
numerizer 是一个 JavaScript 库,可以将一些表述数字的文本转化成数字。例如,将 "three hundred forty two" 转化成数字 342。
在本篇文章中,我会介绍如何安装、使用和基本的 API。
安装
你可以利用 npm 来安装 numerizer。
--- ------- ---------
用法
引入
在 JavaScript 文件中,我们可以使用以下代码来引入 numerizer。
----- --------- - ---------------------
如果你是在 ES6 模块中使用 numerizer,可以这样引入。
------ --------- ---- ------------
基本使用
使用 numerizer 转化文本为数字很简单。以下是一些例子。
----------------- -------- -- -- ---------------- ------- --- ------------ -- --- ----------------- -------- --- ------------- -- ----- -------------- ------- ---------- -- ---------
可选参数
numerizer 还有一个可选的参数,可以指定是否忽略不识别的数字。当不指定这个可选参数时,如果出现无法识别的数字,numerizer 会返回 NaN。
-------------- ------- --- ----- --- ------- --- ----- -------- -- --- -------------- ------- --- ----- --- ------- --- ----- ------- ------ -- -----
可以看到,在第二个例子中,指定了忽略不识别的数字的参数,这样 numerizer 会忽略掉 "dollars" 和 "cents",返回数字 142.5。
其他 API
numerizer 还提供了一些其他的 API,比如 reset()
,用于清空已经加载的数字映射。这个 API 一般情况下不需要使用。
------------------
还有 addUnits(unitsObject)
,用于添加额外的数字映射。
---------------------------------- ------ ---------------- -------------- -- ---
深入了解
数字映射
在 numerizer 的设计中,有一个核心的数据结构——数字映射。数字映射将文本数字(例如 "twenty")与对应的数字值(例如 20)进行映射,因为同一个数字在不同语言或不同场景下可能有不同的表述。
这个映射是一个包含键值对的对象,其中键是文本数字,值是数字值。
- ------- -- ------ -- ------ -- -- --- -
在 numerizer 中,数字映射被称为 "units"。内置了两个 "units",一个是包含了 0-19 的基本数字映射,另一个是包含了 "tens" 的映射。你也可以添加你自己的 "units"。
实现原理
如果你对 numerizer 的实现感兴趣,可以去 numerizer 的 GitHub 页面 查看源代码。大致思路就是将待转化的文本数字按照空格分割,然后逐个识别并映射。可以看到,这个库非常小巧且高效,适合各种场景。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5f070ef6403f2923b035bf8e