16

是否存在用于确定名词的不定冠词(“a”与“an”)的任何 javascript 库?

我可以从一个简单的正则表达式开始,如下所示:

var pattern = /^([aeiou])/i;
pattern.test("umbrella");

但这不处理类似的情况:“用户”应该返回假(你不会说“用户点击按钮”)。

4

3 回答 3

12

Eamon Nerbonne 的以下 Javascript 库应该是您正在寻找的:
http ://home.nerbonne.org/A-vs-An/AvsAn.js

这实际上是作为对 SO 上类似问题的回答而创建的:
https ://stackoverflow.com/a/1288473/505154

这里使用的方法是下载 Wikipedia,对其进行过滤,然后创建一个前缀数据库来确定 a/an,这应该比大多数基于规则的系统更准确。您可以在以下位置找到更多信息(也链接在上面的答案中):
http ://home.nerbonne.org/A-vs-An/

Chad Kirby 还有一个替代实现的链接:
https ://github.com/uplake/Articles

于 2013-03-12T16:28:51.380 回答
3

这是我不久前写的一个非常简单的:

https://github.com/rigoneri/indefinite-article.js

我希望它有帮助!

于 2013-10-28T00:22:13.267 回答
0

我发现这个库有用且易于使用:https ://www.npmjs.com/package/indefinite 。

文档示例:

var a = require('indefinite');

console.log(a('apple')); // "an apple"
console.log(a('banana')); // "a banana"
console.log(a('UFO')); // 'a UFO'
console.log(a('hour')); // 'an hour'
console.log(a('ukelele')); // 'a ukelele'
console.log(a('banana', { capitalize: true })); // 'A banana'
console.log(a('UGLY SWEATER', { caseInsensitve: true })); // 'an UGLY SWEATER'
console.log(a('2')); // 'a 2'
console.log(a('8')); // 'an 8'
于 2019-02-10T18:37:16.983 回答