使用 Simplur 在 JavaScript 中实现字符串复数化

使用一个名为 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!"

结论

英语(和大多数语言)不是一个精确的工具,这可能会导致有趣的编程问题。

Published At
Categories with 技术
Tagged with
comments powered by Disqus