0

私は次の文を持っています:

One Flew Over the Cuckoo's Nest

"the"文のインスタンスと文からすべてのインスタンスを削除したい"'"ので、出力は次のようになります。

期待される出力:

one flew over cuckoos nest

私は次のコードを使用します:

var guess = "One Flew Over the Cuckoo's Nest";
guess = guess.toLowerCase().replace("'", "").replace("the", "");

実際の出力:

one flew over  cuckoos nest

問題は、後でスペースを削除するのではなく、特定の文から"over"削除するだけなので、後にスペースが表示されることです。"the"

を使用してこれを修正できることはわかっていますreplace("the ", "");が、結果を達成するためのより良い方法が必要です。

代わりに使用できる正規表現はありますか?

4

2 に答える 2

3

直面する問題の1つは、最初の一致replaceのみを置き換えることです。それらすべてを置き換えるには、正規表現とローブ修飾子を使用する必要があります。g

guess = guess.toLowerCase().replace(/the|'/g,'').replace(/  +/g,' ');

2番目replaceには、2つのスペースとそれに続く。が含まれます+。これにより、単語が削除されたために発生した「壊れた」スペースが修正されます。また、最初の例では、the単語とアポストロフィの両方を1回のショットで取得するために交互に使用されます。

于 2013-02-18T00:32:47.350 に答える
2

個人的には

var guess = "One Flew Over the Cuckoo's Nest";
guess = guess.toLowerCase().replace("'", "").replace(" the", "").replace("the ", "");

これには正規表現があると思いますが、やり過ぎのようです

私は正規表現の専門家ではないため、正規表現でソリューションを提供することはできません

于 2013-02-18T00:30:11.647 に答える