2017-03-05 6 views
-1

与えられた文字列が指定されたワイルドカードパターンと一致する場合はTrueを、そうでない場合はFalseを返す関数を実装します。指定された文字列が指定されたワイルドカードパターンと一致する場合はTrueを、そうでない場合はFalseを返す関数を実装します。

split(),indexOf(),startsWith()およびendsWith()の組み込みが許可されています。

私は最後のものと非常に似ていますが、まだそれを掛けることはできません。ここで私は私がやろうとしています何

function matches(text, pattern) { 
 
    var x = pattern.split("*"); 
 
    var y = (text.indexOf(x[0]) !== -1); 
 
    for (i = 0; i< x.length; i++){ 
 
     if (y) { 
 
      y = (text.indexOf(x[i]) !== -1); 
 
     } 
 
    } 
 
    return y; 
 
} 
 

 
console.log(matches("lord of the rings", "lord*rings")); // Expected: True 
 
console.log(matches("lord of the rings", "Lord*rings")); // Expected: False 
 
console.log(matches("lord of the rings", "l*o*t*r")); // Expected: False 
 
console.log(matches("lord of the rings", "l*o*t*r*s")); // Expected: True 
 
console.log(matches("lord of the rings", "lord*")); // Expected: True 
 
console.log(matches("lord of the rings", "*rings")); // Expected: True 
 
console.log(matches("lord of the rings", "*the*")); // Expected: True 
 
console.log(matches("lord of the rings", "*")); // Expected: True 
 
console.log(matches("lord of the rings", "*z*")); // Expected: False

これまで持っているものだと、言葉を分離し、それらの一つ一つをチェックしており、それらのすべてが存在しているならば、私はtrue場合、またはを返しますそれらの少なくとも1つは私が返すものではありませんfalse。しかし、何かが間違っていると私はかなり理解していない。

私のコードに解決策やフィードバックをいただければ幸いです。 ありがとうございました!

+2

*「しかし何かが間違っている」*はあまりにも曖昧すぎて役に立たない。現在のコードでは、個々の部分がワイルドカード文字列で指定された**順序**にあることを確認するための何もしません。 –

+1

そして私たちはあなたのためにあなたの宿題をするためにここにいないと言わせてください;) –

+0

Lelioそれはどういう意味ですか?あなたが私のプロフィールでそれを見ることができるかどうかはわかりませんが、私はちょうど私が立ち往生していて、しばらくの間壁に頭を打っていたので、単に楽しみのためにコーディングし、これを簡単に尋ねます。これは私がコーディングクラスを持っているためではなく、これは私の宿題です。 – Lezhka

答えて

0
function matches(text, pattern) { 
    while (text.length) { 
     if (text[0] !== pattern[0] && pattern[0] !== '*') 
      return false; 

     text = text.slice(1); 

     var wordAfterWildcard = pattern.split('*')[1]; 

     if (pattern[0] !== '*' || wordAfterWildcard && text.startsWith(wordAfterWildcard)) 
      pattern = pattern.slice(1); 
    } 
    return !(pattern && pattern.replace('*', '')); 
} 

//私は狂った人だからあなたの宿題をしました。あなたのためではありません。 //楽しむ...

+0

Heeey申し訳ありません私がLelioに与えた答えを見てみましょう。私は文字通りそれをタイプしました。 – Lezhka

+0

Ok私はごめんなさい:) –

関連する問題