2017-03-05 1 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 또는 경우를 반환 무엇 그들 중 적어도 하나는 내가 돌아 오지 않는다 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 나는 미안해. :) –

관련 문제