2012-10-28 1 views
1

나는 그것을 알아 냈다, 고마워. 나는 시체를 html로 옮길 필요가있다. 본문 섹션의 일부 태그가 변경되었습니다.문자열에서 문자를 검색하고 문자가 나타나는 모든 장소의 색인을 출력하는 방법은 무엇입니까? (자바 스크립트)

  } 

      else 
      { 
       window.alert ("You entered an invalid character (" + enterLetter + ") please re-enter"); 
       secondPrompt(); 
      } 

     } 

</script> 

<body onload = "firstPrompt();"> 

    <h2> 
     Word Checker 
    </h2> 

    </body> 
    </html> 

답변

0

재귀 indexOf 사용 :

function findMatches(str, char) { 
    var i = 0, 
     ret = []; 
    while ((i = str.indexOf(char, i)) !== -1) { 
     ret.push(i); 
     i += char.length; //can use i++ too if char is always 1 character 
    }; 
    return ret; 
} 

사용하여 코드 :

var matches = findMatches(enterWord, enterLetter); 
if (!matches.length) { //no matches 
    document.write ("String '" + enterWord + "' does not contain the letter '" + enterLetter + ".<br />"); 
} else { 
    for (var i = 0; i < matches.length; i++) { 
     document.write ("String '" + enterWord + "' contains the letter '" + enterLetter + "' at position " + matches[i] + ".<br />"); 
    } 
} 

Live Demo

Full source (마지막 질문의 일부 개편과 함께)

+0

정확히 내가 무엇을 찾고 있었습니까. 정말 고맙습니다! – user1781453

2

당신은 당신이에 일치하는

function indexFind(string, charac){ 
    var i= 0, found= []; 
    while((i= string.indexOf(charac, i))!= -1) found.push(i++); 
    return found; 
} 

indexFind을 찾을 같이 IndexOf 각 시간을 증가 할 수 있습니다 ('그것은 \'는 지금까지 '이전의 많은 오늘날과 같은,보다 ,'영형');

/* 반환 값 : (배열) 6,22,48 */

+0

젠장, 내 코드 1 줄을 푸시 내부의 포스트 증가와 함께 더 짧게 만들었습니다. +1. OP가 JS로 시작하기 때문에 선택적인 중괄호는 생략하지 않겠습니다. –

+0

더 짧게 :'while (~ (i = string.indexOf (charac, i))) ' – KooiInc