Anda perlu melihat aturan tata bahasa untuk artikel tak tentu (hanya ada dua artikel tak tentu dalam tata bahasa Inggris - "a" dan "an). Anda mungkin tidak setuju ini terdengar benar, tetapi aturan tata bahasa Inggris sangat jelas :
"Kata a dan an adalah artikel tak tentu. Kami menggunakan kata sandang tak tentu an sebelum kata yang diawali dengan bunyi vokal (a, e, i, o, u) dan kata sandang tak tentu a sebelum kata yang dimulai dengan bunyi konsonan (semua huruf lain). "
Perhatikan ini berarti bunyi vokal , dan bukan huruf vokal . Misalnya, kata-kata yang diawali dengan huruf "h" yang tidak bersuara, seperti "kehormatan" atau "ahli waris" diperlakukan sebagai vokal dan dilanjutkan dengan "an" - misalnya, "Merupakan suatu kehormatan untuk bertemu dengan Anda". Kata-kata yang diawali dengan bunyi konsonan diawali dengan a - itulah mengapa Anda mengatakan "mobil bekas" daripada "mobil bekas" - karena "bekas" memiliki bunyi "yoose" daripada bunyi "uhh".
Jadi, sebagai programmer, ini adalah aturan yang harus diikuti. Anda hanya perlu mencari cara untuk menentukan suara awal sebuah kata, bukan huruf apa. Saya telah melihat contohnya, seperti ini di PHP oleh Jaimie Sirovich:
function aOrAn($next_word)
{
$_an = array('hour', 'honest', 'heir', 'heirloom');
$_a = array('use', 'useless', 'user');
$_vowels = array('a','e','i','o','u');
$_endings = array('ly', 'ness', 'less', 'lessly', 'ing', 'ally', 'ially');
$_endings_regex = implode('|', $_endings);
$tmp = preg_match('#(.*?)(-| |$)#', $next_word, $captures);
$the_word = trim($captures[1]);
//$the_word = Format::trimString(Utils::pregGet('#(.*?)(-| |$)#', $next_word, 1));
$_an_regex = implode('|', $_an);
if (preg_match("#($_an_regex)($_endings_regex)#i", $the_word)) {
return 'an';
}
$_a_regex = implode('|', $_a);
if (preg_match("#($_a_regex)($_endings_regex)#i", $the_word)) {
return 'a';
}
if (in_array(strtolower($the_word{0}), $_vowels)) {
return 'an';
}
return 'a';
}
Mungkin yang paling mudah untuk membuat aturan dan kemudian membuat daftar pengecualian dan menggunakannya. Saya tidak membayangkan akan ada sebanyak itu.