2017-03-05 1 views
-1

Implementieren Sie eine Funktion, die True zurückgibt, wenn die angegebene Zeichenfolge dem angegebenen Platzhaltermuster entspricht, ansonsten False.Implementieren Sie eine Funktion, die True zurückgibt, wenn die angegebene Zeichenfolge dem angegebenen Platzhaltermuster entspricht. False, andernfalls

Erlaubt zu verwenden eingebaut split(), indexOf(), und endsWith().

Es ist sehr ähnlich zu dem letzten, den ich tat, aber ich kann immer noch nicht den Dreh raus zu bekommen. Hier ist, was ich bisher

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

Was ich versuche, die Worte zu tun isolieren und dann überprüfen jeden einzelnen von ihnen, und wenn alle von ihnen vorhanden sind, dann kehre ich true oder wenn mindestens eine von ihnen ist nicht ich false zurückgeben. Aber etwas läuft schief und ich verstehe nicht ganz was.

Ich würde eine Lösung oder Feedback zu meinem Code schätzen, bitte halten Sie es ziemlich einfach. Vielen Dank!

+2

* "Aber etwas schief geht" * ist viel zu vage um nützlich zu sein. Ich werde feststellen, dass Ihr aktueller Code nichts unternimmt, um zu überprüfen, ob die einzelnen Teile in der ** Reihenfolge ** sind, die durch die Platzhalterzeichenfolge angegeben wird. –

+1

Und lassen Sie mich sagen, wir sind nicht hier, um Ihre Hausaufgaben für Sie zu machen;) –

+0

Lelio was soll das bedeuten? Ich weiß nicht, ob du es in meinem Profil sehen kannst, aber ich schreibe nur zum Spaß und frag es einfach, weil ich feststecke und meinen Kopf eine Weile gegen eine Wand schlug. Das ist nicht, weil ich einen Codierkurs habe und das ist meine Hausaufgabe. – Lezhka

Antwort

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('*', '')); 
} 

// Ich habe deine Hausaufgaben gemacht, weil ich eine verrückte Person bin. nicht wegen dir. // genießen ...

+0

Heeey Entschuldigung, schauen Sie sich nur die Antwort an, die ich Lelio gegeben habe. Ich habe sie buchstäblich eingegeben. – Lezhka

+0

Ok Es tut mir leid :) –

Verwandte Themen