2016-04-30 9 views
0

どのように2つの類似した単語の違いを検出しますか?例えば2つの単語のJavascriptの違い

word,に比べ

  • word.thisに比べ可変
  • thisとして,を与える:info,に比べ可変
  • infoとして.を与える変数
  • として :,を与えます

この場合、どの単語が長いかがわかります。実際の単語は常に比較のために同じです。長い方が多少の余分な文字を持っているかもしれません。

私はこれを行うにはJavaScriptを使用する必要があります。また

+0

さらにいくつかの例とその結果を追加してください。 –

+2

longer.replace(short、 '') –

+2

あなたが探しているのは[** Levenshtein Distance **](https://gist.github.com/andrei-m/982927)です。 –

答えて

1

、より良い方法があります、文字列が部分文字列であるかどうかを確認した後、メイン文字列から部分文字列を削除します。私はデモを追加した

function checkDiff(a, b) { 
 
    var big = '', small = ''; 
 
    if (a.length > b.length) { 
 
    big = a; 
 
    small = b; 
 
    } else { 
 
    small = a; 
 
    big = b; 
 
    } 
 
    if (big.indexOf(small) != -1) { 
 
    return big.replace(small, ""); 
 
    } else { 
 
    return false; 
 
    } 
 
} 
 

 
alert(checkDiff("word", "word,")); 
 
alert(checkDiff("this", ".this")); 
 
alert(checkDiff("info", ":info,"));

あなたのすべての事件のために。これは、発生した場所に基づいて値を単一の文字列として返します。 .split()メソッドを使用して、出力を配列として送信することもできます。

function checkDiff(a, b) { 
 
    var big = '', small = ''; 
 
    if (a.length > b.length) { 
 
    big = a; 
 
    small = b; 
 
    } else { 
 
    small = a; 
 
    big = b; 
 
    } 
 
    if (big.indexOf(small) != -1) { 
 
    console.log(big.replace(small, "").split("")); 
 
    return big.replace(small, "").split(""); 
 
    } else { 
 
    return false; 
 
    } 
 
} 
 

 
alert(checkDiff("word", "word,")); 
 
alert(checkDiff("this", ".this")); 
 
alert(checkDiff("info", ":info,"));

+1

開始と終了を返すことは可能ですか?変数は別に? :0 –

+1

@AmyNevilleちょうど更新されました。チェック? –

+1

@AmyNeville 'console.log'も追加されました。そして、発生に基づいて配列として異なる値を返します。 –

3

あなたは文字の配列の違いをチェックしてみてください。

var shortStr = 'info'; 
var longStr = ':info,'; 

console.log(Array.from(longStr).filter(function(c) { 
    return Array.from(shortStr).indexOf(c) === -1; 
})); 
+0

これはES6ではありませんか?それは通常のワークフローでサポートされていますか? –

+0

それは動作するはずです。 https://jsfiddle.net/845qyskc/ –

+0

はい、Internet Explorer 8では動作しません。* JK * –

関連する問題