是否存在用于确定名词的不定冠词(“a”与“an”)的任何 javascript 库?
我可以从一个简单的正则表达式开始,如下所示:
var pattern = /^([aeiou])/i;
pattern.test("umbrella");
但这不处理类似的情况:“用户”应该返回假(你不会说“用户点击了按钮”)。
是否存在用于确定名词的不定冠词(“a”与“an”)的任何 javascript 库?
我可以从一个简单的正则表达式开始,如下所示:
var pattern = /^([aeiou])/i;
pattern.test("umbrella");
但这不处理类似的情况:“用户”应该返回假(你不会说“用户点击了按钮”)。
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
我发现这个库有用且易于使用: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'