0

我希望有更好的方法来写这个?删除 [] 方括号对我来说是个问题。

alert(CanvasData)//images[]=Base.jpg&images[]=Frame_Clear.png&images[]=Left_Clear.png&images[]=Right_Clear.png&images[]=Lenses_Lenses-Semi-Clear.png&images[]=


var PayName = CanvasData.replace("images[]=", "");
PayName = PayName.replace(/\[.*?\]/g, '');
PayName = PayName.replace(/\&images=/g, ' ');
PayName = PayName.replace(/\.png/g, " &");
PayName = PayName.replace(/\_/g, ' ');
PayName = PayName.substring(8);//remove fist 8 character (Base.jpg)
PayName = PayName.substring(0, PayName.length - 2);//remove last 2 characters // Frame Clear & Left Clear & Right Clear & Lenses Lenses-Semi-Clear &


alert(PayName)// Frame Clear & Left Clear & Right Clear & Lenses Lenses-Semi-Clear 

谢谢

4

3 回答 3

1

尝试转义括号,否则它们对正则表达式具有特殊含义(定义字符类)。

CanvasData.replace("images\[\]=", "");

顺便说一句,在替换部分的第二行代码中,您已经在做同样的事情了。

于 2013-08-12T06:08:19.963 回答
1

使用三个全局正则表达式调用替换,其中第一个调用列出了应该用任何内容替换的每个替代项(即删除所有'='和'Base.jpg&'),第二个调用列出应该用空格替换的替代项(' images[]'、'_' 和 '.png'),第三个将你的松散端联系起来:

 var PayName = CanvasData.replace(/=|Base\.jpg&/g,'')
                         .replace(/images\[\]|_|\.png/g, ' ')
                         .replace(/^\s*|\s*&\s*$/g, '');

 // => "Frame Clear & Left Clear & Right Clear & Lenses Lenses-Semi-Clear"
于 2013-08-12T06:13:50.103 回答
0

如果方括号[]总是空的,你可以这样做:

var Payname = CanvasData.split("[]").join("");

显然,这不能处理一般情况。

这样做的目的是将[]字符串视为数据分隔符,并将字符串转换为解析后的数组——就像解析 "1,3,6,4.5,3" 一样,除了我们的逗号是[]. 然后将通过分解字符串形成的数组连接回字符串,并使用空格分隔符。全部[]消失。但那些[occupied]没有。

于 2013-08-12T06:19:14.673 回答