0

だから私は(必要なときに)に向けaられるスクリプトを書こうとしています。anそして、思ったより難しいです。

var txt = "This is a apple.";

var pos = txt.search(/a\s[aeiou]/i);
txt = pos != -1 ?
      txt.substring(0,pos+1) + "n" + txt.substring(pos+1,txt.length) :
      txt;
//"This is an apple."

動作していますが、試してみたところ、正規表現のために"There are 60 minutes in a hour."変更されませんでした。anだから私はそれを変更しました:

var pos = txt.search(/a\s([aeiou]|hour)/i);

現在は機能しています(少なくとも「1時間」)。しかし、今、私が置く"There are people in a university."と、それはに変更されますがan university、これは正しくありません。

では、英語aでの使用規則をカバーできる正規表現はありますか?anありがとう!

4

1 に答える 1

2

しばらく前にStackOverflowでこれについて非常に良いスレッドがありました:単語の前に「a」と「an」を正しく付けるにはどうすればよいですか?

基本的に、最良の方法は学習するための大規模なデータセットを含み、次善の方法は音声合成用に設計されたCMUdictなどの発音辞書を含むというものでした。

CMU dictの例を示すには、次のようにします。

University comes out as:
Y UW N AH V ER S AH T IY . 

Umbrella is rendered as:
AH M B R EH L AH . 
于 2012-06-08T23:35:27.130 に答える