使用一个名为 Simplur的库为您提供一个简单的JavaScript工具来解决这个问题!
编程中有一些问题源于人类语言,其中一个问题是单元/多元符号。
单一的马铃薯被写成马铃薯
,但两个或更多的马铃薯被写成马铃薯
。
有几种方法,但它们并不特别优雅......
1const shoppingCart = ['guitar', 'bicycle', 'shoes'];
2
3/* 1st approach */
4const noun = shoppingCart.length >= 2
5 ? 'items'
6 : 'item';
7const text1 = `You have ${shoppingCart.length} ${noun} in your shopping cart`;
8// "You have 3 items in your shopping cart"
9
10/* 2nd approach */
11const text2 = `You have ${shoppingCart.length} item(s) in your shopping cart`;
12// "You have 3 item(s) in your shopping cart"
虽然这些解决方案工作,但一个名为 Simplur的新库有一个非常聪明的方式来解决它。
<$>[注]我们正在使用英语示例,但许多语言都呈现了相同的问题,其中多数名称与单个形式的拼写不同。
使用简单
您可以通过 npm 安装 simplur:
1$ npm install simplur
以下是如何使用 simplur:
1import simplur from 'simplur';
2
3const breadCount = 12;
4const text = simplur`Get ${breadCount} loa[f|ves] of bread`;
5// "Get 12 loaves of bread"
Simplur 使用的是使用 simplur
函数的 标记的 [模板字符串],并且当数字大于 1 时,它会使用第二个称号形式。
空的单一形式
Simplur 还使用字符号,仅为其多数形式添加一个字符号(而不是改变一个重要部分的单词):
1const shoppingCart = ['shoes'];
2const text = simplur`You have ${shoppingCart.length} item[|s] in your shopping cart`;
3// "You have 1 item in your shopping cart"
你只需要忽略第一种形式。
多种形式的
您可以包括几种名词,简单的将前瞻
。在英语中,我们这样的示范
可以很容易地处理:
1const chipmunks = ['alvin', 'simon', 'theodore'];
2const text = simplur`[That|Those] ${chipmunks.length} chipmunk[|s] [is|are] getting away!`;
3// "Those 3 chipmunks are getting away!"
结论
英语(和大多数语言)不是一个精确的工具,这可能会导致有趣的编程问题。