2012-01-18 193 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