2012-01-18 198 views
-1
  var layerName = layer.name; 
     //replace weird characters in layer names 
     var layerName = layerName.replace(")", "-"); 
     var layerName = layerName.replace("(", "-"); 
     var layerName = layerName.replace(":", "-"); 
     var layerName = layerName.replace(":", "-"); 
     var layerName = layerName.replace(/\//, "-"); 
     var layerName = layerName.replace('/', ""); 
     var layerName = layerName.replace("---", "-"); 
     var layerName = layerName.replace("--", "-"); 
     var file = new File(folder.fsName+"/"+layerName+".png"); 

使用擴展名,但由於某些原因,它不會替換兩個「 - 」字符。我覺得使用正則表達式可以更輕鬆地做到這一點,但是我吮吸那些東西。我試圖取代所有怪異的非字母數字字符和空格以「 - 」。替換爲Javascript替換多個字符

+1

你只需要聲明layerName變量一次 – tomfumb 2012-01-18 20:38:49

回答

2
如何

一下:


// Test String 
var layerName = "123---A%*^% )()H"; 
layerName 
    .replace(/\-+/g,'-') // Collapse multiple dashes into a single one 
    .replace(/\W+/g,'-'); // Replace Non-word characters 

結果:

123-A-H 

\W+匹配所有非單詞字符,

+0

這工作完美。謝謝!我將不得不開始深入探索正則表達式。 – Lukasz 2012-01-19 01:02:11

+0

不客氣,這是一個正則表達式的快速鏈接,我在那個網站[Regular Expresions](http://www.regular-expressions.info/) – Triztian 2012-01-19 01:13:22

0

你想要的正則表達式是:

[^a-zA-Z0-9] 

和你的替換字符是' - '

+0

這樣學到了很多東西? var layerName = layerName.replace(「[^ a-zA-Z0-9]」,「 - 」);它似乎沒有工作 – Lukasz 2012-01-18 20:54:48