1
기본적으로 일부 html 문자열에서 함수를 호출하고 해당 항목의 시작 및 끝 인덱스 배열을 가져올 수 있기를 원합니다. 그것은 콘솔에서 다음과 같이 보일 것이다 :이 일의 최종 목표는 훨씬의 CTRL + F 기능과 같은 문서에서 검색 할 문자열 주어진 몇 가지 태그를 HTML을 마무리 할 수있을 것입니다 스트립 된 후 특정 문자열을 생성하는 html 부분을 어떻게 얻을 수 있습니까?
var html = "<b>Hello</b> <mark>World</mark>";
> getIndices(html, "Hello\u00A0World");
< [[3, 29]]
대부분의 브라우저가 그렇습니다.
필자는 코드 스 니펫을 아래에 작성했지만, 성능은 끔찍합니다. 특별히 긴 웹 페이지에서 전체 본문의 내부 HTML을 호출 할 때 그렇습니다. 이 코드는 무차별 대항 (brute force)과 반대되는 바이너리 검색을 통해 최적화 될 수 있으며 다른 것들은 약간 다르게 처리하지만 구현하는데 문제가 있습니다. 이것에 대한 생각?
function getIndices(html, searchTerm){
var i = 0,
indices = [];
while(html.slice(i).replace(/<[^>]*>/g, '').indexOf(searchTerm) !== -1){
i = html.indexOf(searchTerm[0], i);
if(html.slice(i).replace(/<[^>]*>/g, '').indexOf(searchTerm) === 0){
indices.push(i);
}
i++;
}
return indices;
}
고마워요!