2017-03-15 129 views
0

我有一個按鈕觸發功能compareArea()。它看起來像這樣:失蹤)比較字符串時的參數列表後

<button id="compare" onclick="compareArea()" type="button">Compare</button> 

<script> 
function compareArea() { 
     alert("string1" ~= "string2"); 
    } 
</script> 

不過,我有錯誤返回missing) after argument list。出了什麼問題?

+2

使用''==而不是'〜='。 –

+0

但是,這返回一個布爾值 - 如果我想要一個整數多少個字母不匹配? @Kinduser –

+0

你的意思是「多少個字母不匹配」。字符串的模糊比較是一個複雜的話題,你必須解釋哪種算法比你更喜歡。 – gyre

回答

1

據我所知,沒有簡單的比較可以告訴你有多少個字符不同。你可以做的是:

  1. 檢查哪個字符串更短。這裏沒有問題,如果兩個字符串的長度相同,但一旦一個比另一個短時,我們在遍歷它們時會到達死衚衕。
  2. 迭代所有字符,比較它們中的每一個。
  3. 增加每個不匹配的計數器。

它看起來是這樣的:

<button id="compare" onclick="compareArea()" type="button">Compare</button> 

<script> 
    function compareArea() { 
    var string1 = "string1"; 
    var string2 = "string2"; 
    var shortest; 
    var count = 0; 

    if(string1.length === string2.length) { 
     shortest = string1; 
    } else if(string1.length < string2.length) { 
     shortest = string1; 
     count = string2.length - string1.length; 
    } else if(string1.length > string2.length) { 
     shortest = string2; 
     count = string1.length - string2.length; 
    } 

    for (var i=0; i < shortest.length; i++) { 
    if(string1.charAt(i) !== string2.charAt(i)) { 
     count++; 
    } 
    } 
    alert(count); 
    } 
</script> 
+0

謝謝Felix。這是有道理的。正是我在找的東西。 @Felix –