在Javascript中,如何从末尾修饰字符串数量,追加另一个字符串,并重新添加最初截断的字符串?从Javascript末尾修剪字符串
特别是,我有filename.png
,并且想把它变成filename-thumbnail.png
。
我要找的线沿线的东西:
var sImage = "filename.png";
var sAppend = "-thumbnail";
var sThumbnail = magicHere(sImage, sAppend);
在Javascript中,如何从末尾修饰字符串数量,追加另一个字符串,并重新添加最初截断的字符串?从Javascript末尾修剪字符串
特别是,我有filename.png
,并且想把它变成filename-thumbnail.png
。
我要找的线沿线的东西:
var sImage = "filename.png";
var sAppend = "-thumbnail";
var sThumbnail = magicHere(sImage, sAppend);
您可以使用.slice
,它接受负指标:
function insert(str, sub, pos) {
return str.slice(0, pos) + sub + str.slice(pos);
// "filename" + "-thumbnail" + ".png"
}
用法:
insert("filename.png", "-thumbnail", -4); // insert at 4th from end
这是一个非常方便的功能,可以在多个实例中正常工作。我看到的唯一潜在问题是文件扩展名可能不总是4个字符(包括'.')。 – 2012-01-04 19:11:59
@Colin O'Dell:是的,这是正确的。我没有使用类似于正则表达式的东西,因为OP只声明了“从末尾开始的一些字符”。 – pimvdb 2012-01-04 19:35:33
尝试使用正则表达式(好文档可以在https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions找到)
我没有测试过,但你可以试试:
var re = /(.*)\.png$/;
var str = "filename.png";
var newstr = str.replace(re, "$1-thumbnail.png");
console.log(newstr);
我会使用一个正则表达式查找文件名的各个部分,然后重新排列,并从那里根据需要添加字符串。
事情是这样的:
var file='filename.png';
var re1='((?:[a-z][a-z0-9_]*))';
var re2='.*?';
var re3='((?:[a-z][a-z0-9_]*))';
var p = new RegExp(re1+re2+re3,["i"]);
var m = p.exec(file);
if (m != null) {
var fileName=m[1];
var fileExtension=m[2];
}
这将使你在文件名的文件的名称和在fileExtension文件的扩展名。从那里你可以附加或预先安排你想要的任何东西。
var newFile = fileName + '-thumbnail' + '.' + fileExtension;
也许比正则表达式更简单,你可以使用lastindexof(见http://www.w3schools.com/jsref/jsref_lastindexof.asp)来查找文件扩展名(查找周期 - 这允许类似的.html较长的文件扩展名),然后用切片由pimvdb的建议。
你可以使用正则表达式,做这样的事情:
var sImage = "filename.png";
var sAppend = "-thumbnail$1";
var rExtension = /(\.[\w\d]+)$/;
var sThumbnail = sImage.replace(rExtension, sAppend);
rExtension
是一个正则表达式看起来为扩展名,捕获它变成$1
。您会看到$1
出现在sAppend
的内部,这意味着“在此处放置扩展名”。
编辑:此解决方案将与任何长度的任何文件扩展名。在这里看到它的行动:http://jsfiddle.net/h4Qsv/
非常简单的字符串操作。 Quirksmode有一个很好的介绍。 http://www.quirksmode.org/js/strings.html – mrtsherman 2012-01-04 18:58:57
检查https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/slice,这应该是有用的。 – julioolvr 2012-01-04 18:59:25