2014-05-07 242 views

回答

0

您需要編寫自定義比較函數,並且該函數需要填充它與前導零找到的任何數字,以便字符串中的所有數字都具有相同的長度。

這將這樣的伎倆:

var fruits = ["Banana","5","15", "Orange", "Apple", "Mango"]; 
fruits.sort(myCompFunc); 

function myCompFunc(a,b) 
{ 
    // pad digits 
    var x = padNumbers(a); 
    var y = padNumbers(b); 

    // return comparison 
    return (x>y); 
} 

function padNumbers(str) 
{ 
var retVal = ""; 
var digits = ""; 
for (var i=0; i<str.length; i++) 
{ 
    var c = str.substr(i,1); 
    if (c>="0" && c<="9") 
     digits += c; 
    else 
    { 
     if (digits != "") 
     { 
      var l = 10-digits.length; 
      for (var d=0; d<l; d++) 
       digits = "0" + digits; 
      retVal += digits; 

      digits = ""; 
     } 
     retVal += c; 
    } 
} 

if (digits != "") 
{ 
    var l = 10-digits.length; 
    for (var d=0; d<l; d++) 
     digits = "0" + digits; 
    retVal += digits; 
} 

return retVal; 
} 

可與正則表達式替換更簡潔來完成。

function padNumbers(str) 
{ 
    return str.replace(/\d+/g, function(match) { 
     return new Array(10-match.length+1).join('0')+match; }); 
} 
相關問題