2013-08-28 4 views
-1

두 개의 텍스트 영역을 사용하고 있습니다. 프로젝트는 온라인 타이핑 테스트에 관한 것입니다. 두 개의 텍스트 영역을 사용했습니다. 첫 번째 텍스트 영역에는 두 번째 텍스트 영역에 입력 할 내용이 들어 있습니다. 그물 타자를 치는 속도 계산을 위해 나는 javascript diff 산법을 필요로한다.자바 스크립트를 사용하여 문자열 단어를 비교하는 방법

Javascript Diff Algorithm 너 한테 내 모든 requirements..which는 두 문자열의 차이점이

jsdiff.js

자바 스크립트 파일을 사용 맞습니다. 및

JS Diff Demo

이 같은 자바 스크립트 파일을 사용하는 데모입니다 ...이 데모의 모습이 있어야합니다. 하지만 어떻게 정확한 단어를 입력했는지 알 수 있습니까? 문제는 제공된 javascript 파일이 주석을 사용하거나 문서를 제공하지 않는다는 것입니다.

+2

, 그것은 보인다 해야 할 것. – bbill

+0

@bbill 고맙습니다.하지만 내 요구 사항은 내가 말한 것과 정확히 일치하거나 데모에서 볼 수 있습니다. 나는 모든 것을 다 했어.하지만 난 사용자가 타이핑 한 올바른 단어를 세고 싶다. 그게 큰 도움이 될거야. – stackOverflow

+2

@bbill 당신이 제안한 데모 링크를 줄 수 있어요. 사전에 고맙습니다 – stackOverflow

답변

0

lenvenshtein algorithm의 조합을 사용하여 정확도와 다른 단어를 세는 기본 문자열 조작을 찾을 수 있습니다. 이것은 향상시킬 수 있지만 아이디어를 얻을 수 있습니다 :

function wordAccuracy(str1, str2) { 

    var len = str1.length, 
     distance = levenshtein(str1, str2), 
     words1 = str1.split(' '), 
     words2 = str2.split(' '); 

    return { 

    accuracy: 100 - (0|(distance * 100)/len) +'%', 

    fail: words1.filter(function(word, idx){ 
     return word != words2[idx]; 
    }).length 
    } 
} 

// Example: 

var str1 = 'Lorem ipsum dolor sit amet consectetur adipiscing elit'; 
var str2 = 'Lorme ipsmu dolor sit maet cnsectetur adipiscing elot'; 

console.log(wordAccuracy(str1, str2)); 
//^ { 
// accuracy: '86%' 
// fail: 5 
// } 
1

위의 설명보다 더 많은 설명이 필요한지 잘 모르겠습니다. 나는 diff-highlighting your link show를 좋아하지 만, 만약 여러분 모두가 diffs를 계산한다면, 왜 이것이 작동하지 않는가? 당신은 간단하게 뭔가를 찾고 있다면 당신은 단지 공간/문장 부호에 분할 그것이 내가 가지고 대부분의 온라인 타이핑 테스트 것 같아 무엇인가하는 올바른 배열 및 입력 배열의 차이를 셀 수처럼 http://jsfiddle.net/vSySu/

var arr1 = $('#text1').val().split(' '); 
var arr2 = $('#text2').val().split(' '); // split on whatever string or regex you want. 

var diffs = 0; 
for (var i = 0; i < arr1.length; i++) { 
    if (arr1[i] !== arr2[i]) { 
     diffs++; 
    } 
} 

alert(diffs); 
관련 문제