2014-05-13 109 views
0

我有一個包含座標和一些whitesace的字符串:JavaScript:從字符串中提取座標

E.G. 「SM10,10 50,50 20,10 \ nFM10,20 30,40」

我想提取座標表:

["10,10", "50,50", "20,10", "10,20", "30,40"] 

,然後執行一些變換(讓我們通過說規模5)並生成結果字符串:

"SM50,50 250,250 100,50\nFM50,100 140,200" 

在JavaScript中執行此轉換的最高性能方法是什麼?

+1

退房我張貼的答案。它應該正是你需要的。我更新了以前的答案,所以它會做你所問的。 – aecend

回答

2

更新:

這應該是你需要的到底是什麼。它會查找並更改字符串中的座標,並按照其開始的格式重新組合字符串。讓我知道如果你認爲它缺少的東西。

function adjust(input) { 
    var final = ""; 
    var lastIndex; 
    var temp = []; 
    var regex; 

    var coords = input.match(/\d+,\d+/g); 

    if (coords) { 
     for (i = 0; i < coords.length; i++) { 
      temp = coords[i].split(","); 

      temp[0] *= 5; 
      temp[1] *= 5; 

      regex = new RegExp("([^0-9])?" + coords[i] + "([^0-9])?","g"); 
      regex.exec(input); 

      lastIndex = parseInt(regex.lastIndex); 

      final += input.slice(0, lastIndex).replace(regex, "$1" + temp.join(",") + "$2"); 
      input = input.slice(lastIndex, input.length); 

      temp.length = 0; 
     } 
    } 

    return final + input; 
} 


以前的答案:

這裏,快速有效:

var coords = "SM10,10 50,50 20,10\nFM10,20 30,40".match(/\d{1,2},\d{1,2}/g); 
for (i = 0; i < coords.length; i++) { 
    var temp = coords[i].split(","); 
    temp[0] *= 5; 
    temp[1] *= 5; 
    coords[i] = temp.join(","); 
} 

alert (coords.join(",")); 
+0

http://codepen.io/aecend/pen/Borsn/ – aecend