在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