I need to replace a button using a Regex in JavaScript and was wondering how to do this. I know how to开发者_开发技巧 grab the src of the button, but I need to take the filename and either add some text "-next" or remove "-next", based on two options that can be toggled. Here are the two different file names:
/images/button.png
/images/button-next.png
Any help would be greatly appreciated.
To insert a -next
before the final dot, you could do
result = subject.replace(/(?=\.[^.]+$)/g, "-next");
To remove a -next
before the final dot:
result = subject.replace(/-next(?=\.[^.]+$)/g, "");
if (url.match(/-next/))
newUrl = url.replace("-next.", ".");
else newUrl = url.replace(".", "-next.");
function toggle(img){
if(img.src.match(/-next\.[^\.]+$/)){
img.src=img.src.replace(/\.[^\.]+$/,'-next$&');
return true;
}
img.src=img.src.replace(/-next(\.[^\.]+)$/,'$1');
return true;
}
Works on any file extension.
That looks to me like what you need is pretty simple:
if (addingNext) {
return str.replace(/\.png$/i, '-next.png');
} else {
return str.replace(/-next\.png$/i, '.png');
}
var src1 = "/images/button.png";
var src2 = "/images/button-next.png";
src1 = src1.replace(/\.(\w+)/, "-next.$1");
src2 = src2.replace("-next", "");
var str = "/images/button.png";
var idx = str.lastIndexOf('.');
var replValue = "-next";
var newStr = str.substring(0,idx) + replValue +
str.substring(idx);
There are probably more efficient ways, but that would work. You'd also want to test for no . found. You can also use a regex but that is more explicit.
精彩评论