在Javascript中从末尾修剪字符串

时间:2012-01-04 18:54:28

标签: javascript string trim

在Javascript中,我如何从一端用一些字符修剪一个字符串,追加另一个字符串,然后重新附加最初截断的字符串?

特别是,我有filename.png并希望将其转换为filename-thumbnail.png

我正在寻找以下内容:

var sImage = "filename.png";
var sAppend = "-thumbnail";
var sThumbnail = magicHere(sImage, sAppend);

5 个答案:

答案 0 :(得分:7)

您可以使用.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

答案 1 :(得分:3)

尝试使用正则表达式(可在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);

答案 2 :(得分:1)

我会使用正则表达式来查找文件名的各个部分,然后根据需要重新排列和添加字符串。

这样的事情:

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]; 
}

这会在fileName中提供文件名,在fileExtension中提供文件扩展名。从那里你可以附加或前置任何你想要的东西。

var newFile = fileName + '-thumbnail' + '.' + fileExtension;

答案 3 :(得分:0)

也许比正则表达式更简单,你可以使用lastindexof(参见http://www.w3schools.com/jsref/jsref_lastindexof.asp)来查找文件扩展名(查找句点 - 这允许更长的文件扩展名,如.html),然后使用pimvdb建议的切片

答案 4 :(得分:0)

您可以使用正则表达式并执行以下操作:

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/