8

coderbyte には次のコードを使用しました。

function VowelCount(str) {
    // code goes here  
    return str.match(/[aeiou]/gi).length;
}

// keep this function call here
// to see how to enter arguments in JavaScript scroll down
print(VowelCount(readline()));

次の部分を除いて、ほとんどのコードを理解しています。

  1. スラッシュと角括弧は何をしますか?
  2. は何をしgiますか?
  3. search()とはどう違いmatch()ますか?どのような状況で何を使用すればよいですか?
4

3 に答える 3

8

ドキュメントの引用:

文字列にパターンが含まれているかどうかを知りたい場合 search(正規表現のtest方法と同様); 詳細については (ただし、実行が遅くなります) (正規表現の方法matchに似ています) を使用してください。exec

この場合、母音 ('a'、'e'、'i'、'o'、または 'u' のいずれか - いわゆる文字クラス式で表現されるもの[aeiou]) が含まれていることを知るだけでは十分ではありません。関数の目的は母音を数えることであるため、文字列。

そのため、文字列をスキャンし、大文字と小文字 ( ) に関係なく、すべての一致(修飾子の目的) を配列に収集し、この配列の長さを返します。/g/i

ただし、この関数にはバグがあります。String.matchは一致が見つからなかった場合に返すためnull、param string に母音がまったくない場合、関数はエラーをスローします。

VowelCount('ddd'); // TypeError: Cannot read property 'length' of null

試合結果の追加チェックで修正する必要があります。

function vowelCount(str) {
  var vowels = str.match(/[aeiou]/gi);
  return vowels ? vowels.length : 0;
}
于 2013-09-08T19:07:53.210 に答える
0

スラッシュは正規表現 ( RegExp()) リテラル (new RegExp()表記法を使用するのではなく) を区切ります。角括弧は、正規表現が一致する一連の文字です。

参考文献:

于 2013-09-08T19:08:37.543 に答える
0

スラッシュは正規表現ステートメントをラップします。

giは、検索がグローバル (すべての出現) で大文字と小文字を区別しないことを意味します。

于 2013-09-08T19:14:34.080 に答える