是否存在用于确定名词的不定冠词(“a”vs“an”)的javascript库?
我可以从一个简单的正则表达式开始:
var pattern = /^([aeiou])/i;
pattern.test("umbrella");
但这不会处理如下情况:“user”应该返回false(你不会说“ 用户点击按钮”)。
答案 0 :(得分:9)
Eamon Nerbonne的以下Javascript库应该是您正在寻找的:
http://home.nerbonne.org/A-vs-An/AvsAn.js
这实际上是在SO上创建的类似问题的答案:
https://stackoverflow.com/a/1288473/505154
此处使用的方法是下载Wikipedia,过滤它,并创建前缀数据库以确定/ a,这应该比大多数基于规则的系统更准确。您可以在以下位置找到更多信息(也在上面的答案中链接):
http://home.nerbonne.org/A-vs-An/
Chad Kirby还有一个替代实施的链接:
https://github.com/uplake/Articles
答案 1 :(得分:2)
答案 2 :(得分: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'