2012-03-04 2 views
0

저는이 단어로 끝이났습니다. 현재 단어가 진짜인지 아닌지를 확인하는 사전을 HTML 시스템에 통합하려고합니다. 나는 현재 사전으로 사용하고있는 "words.txt"문서를 가지고있다. 나는 당신이 한 단어를 찾기 위해 문서를 검색 할 수는 있지만 어떤 정보도 찾을 수 없으며 단어가 있는지를 확인하는 방법으로 이것을 사용하는 방법을 배웠다. 현재 나는 단어를 찾는 데 걸리는 시간과 함께 아무런 기쁨을 느끼지 못한다.단어가 존재하는지 확인하기 위해 사전을 HTML 시스템에 통합하십시오.

그래서 현재 사용자가 텍스트 상자를 사용하여 단어를 입력하고이 단어가 사전과 상호 참조 될 수 있도록하려는 경우 단어가 발견되면 사용자에게 단어가 있음을 알립니다. . 어떻게해야할지 모르겠습니다.

그러나이 방법을 사용하는 것이 더 쉽거나 간편한 방법이라면 입력에 대한 감사하게 생각합니다.

미리 감사드립니다. 그리고 나는 다른 것을 명시하는 것이 기쁠 것입니다.

답변

0

xmlhttprequest을 사용하여 사전 파일을로드 할 수 있으며로드가 완료되면 배열에 덤프 할 수 있습니다. 그런 다음 키가 해제 될 때마다 (또는 단어의 철자를 검사하려고 할 때) 단어를 사전의 단어와 비교하는 함수를 호출 할 수 있습니다.

HTML :

<textarea onkeyup="check(this)"></textarea> 

자바 스크립트가 :

//A large array of dictionary words 
var dictionary = new Array(); 




//First, let's load up the dictionary 
address = "words.txt"; 


//Create an XMLHTTPRequest object 
var req = (window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"); 
if(req == null) { 
    console.log("Error: XMLHttpRequest failed to initiate."); 
} 

//When it loads, add all the elements to the dictionary array 
req.onload = function() { 

    dictionary = req.responseText.split("\n"); 


    //Convert all the characters to lowercase. That way, multi-case strings are allowed. 
    for(var i = 0; i < dictionary.length; i++) 
     dictionary[i] = dictionary[i].toLowerCase(); 



} 
try { 

    req.open("GET", address, true); 
    req.send(null); 

} catch(e) { 
    console.log("Oh snap"); 
} 









//This function is called every time a key is released 
function check(element) { 

    var allWords = element.value.split(" "); 


    for(var i = 0; i < allWords.length; i++) { 


     if(dictionary.indexOf(allWords[i].toLowerCase()) == -1) { 
      element.style.backgroundColor = "#FFF"; 
      return; 
     } 

    } 

    element.style.backgroundColor = "#0F0"; 

} 

편집 : 텍스트 영역에 대한 작동하도록 코드를 수정

+0

@ JeffreySweeny : 여러 단어가 어떨까요? – Bytemain

+0

@ David. 당신이 말하는 것을 이해하고 있다고 가정 할 때 여전히 작동합니다. 'indexOf' 함수는 단어가 사전에 전혀 존재하지 않으면 -1을 반환합니다. 사용자가 "사과 사과"를 입력하면 여전히 작동합니다. 그러나이 코드에는 이중 공백이나 새 줄과 같은 문제가 없습니다. 수정하기는 쉽지만 예제에서는 추가 코드가 필요하지 않습니다. –

+0

이것은 훌륭합니다! 그래서 이것을 올바르게 읽는다면 단순히 html 텍스트 상자를 만들고이 JavaScript를 연결해야합니다. 그러면 제대로 작동합니까? 이 경우에 사용되는 사전의 관점에서 "words.txt"는 각 단어 사이에 구분 기호가 필요합니다. 현재 "words.txt"는 기본적으로 하나의 매우 긴 단어이며 공백을 포함하지 않으므로 –

2

데이터 구조는 사전에 적합합니다. trie는 각 문자로 단어 종류의 트리입니다. 다음은 PHP에 대한 좋은 설명입니다. http://phpir.com/tries-and-wildcards.

+0

이 시스템은 잘 작동

여기 한 가지 방법이다 ,하지만이 기사에서 수집 한 내용은 개별적으로 모든 단어를 입력해야하지만, 이미 acc 내가 사전에 파일을보고 입력 한 단어를 찾을 수 있습니까? –

+0

@ Joel.Conway : 나무를 사용하고 빠른 조회가 있습니다. 이것이 초보자 질문이라면 어떻게 그처럼 복잡한 기계공을 제안 할 수 있습니까? 트라이는 이해할 때 더 단순하지만 더 많은 노력을 기울여야합니다. JS 트리를 찾을 수있을거야. – Bytemain

+0

@ Joel.Conway 귀하의 타겟 고객에 따라, David이 게시 한 최적화 기술 중 일부를 구현하는 것이 분명 도움이 될 것입니다. 내 코드를 사용하면 10 년 된 brickputer가 눈에 띄게 사전 목록을 통해 chug 것입니다. –

관련 문제