我希望有更好的方法来写这个?删除[]方括号对我来说是一个问题。
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
由于
答案 0 :(得分:1)
尝试转义括号,否则它们对正则表达式具有特殊含义(定义字符类)。
CanvasData.replace("images\[\]=", "");
顺便说一下,你已经在替换部分的第二行代码中做了同样的事情。
答案 1 :(得分:1)
使用三个全局正则表达式调用replace,其中第一个调用列出了每个应该替换为什么的替换(即删除所有'='和'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"
答案 2 :(得分:0)
如果方括号[]
始终为空,则可以执行以下操作:
var Payname = CanvasData.split("[]").join("");
显然,这不处理一般情况。
这样做是将[]
视为数据分隔符,并将字符串转换为已解析的数组 - 就像解析“1,3,6,4.5,3”一样,除了我们的逗号是{{ 1}}。然后通过分解字符串形成的数组连接回一个带有空白分隔符的字符串。所有[]
都消失了。但那些[]
没有。