2012-01-04 23 views
2

Javascriptでは、文字列を最後から数文字分トリムし、別の文字列を追加して、最初に切り捨てられた文字列をもう一度追加し直す方法はありますか?特にJavascriptの最後から文字列を取り除く

、私はfilename.pngを持っており、filename-thumbnail.pngにそれを有効にします。

私はの線に沿って何かを探しています:

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

非常に簡単な文字列操作:ここでアクションでそれを参照してください。 Quirksmodeは良い紹介です。 http://www.quirksmode.org/js/strings.html – mrtsherman

+0

有用であるはずのhttps://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/String/sliceをチェックしてください。 – julioolvr

答えて

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 
+0

これは、複数のインスタンスでうまくいく非常に便利な機能です。私が見る唯一の潜在的な問題は、ファイル拡張子が常に4文字( '.'を含む)であるとは限りません。 –

+1

@コリン・オデル:はい、そうです。 OPは "最後からいくつかの文字"しか書いていないので、私はregexpsのようなものを使用しませんでした。 – pimvdb

2

は、Aを使用してみてください正規表現(良い文書は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); 
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]; 
} 

あなたのファイル名にファイルの名前とfileExtensionでファイルの拡張子を与えるだろう。そこから、あなたが望むものを追加または追加することができます。 pimvdbにより示唆されるように、その後、スライスを使用する -

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

正規表現よりも、おそらく単純な、あなたは(これは.htmlのように長いファイル拡張子を可能期間を探してください)ファイルの拡張子を見つけるために、(http://www.w3schools.com/jsref/jsref_lastindexof.aspを参照)のlastIndexOf使用することができます。

0

あなたは正規表現を使用して、このような何か行うことができます:

var sImage = "filename.png"; 
var sAppend = "-thumbnail$1"; 
var rExtension = /(\.[\w\d]+)$/; 

var sThumbnail = sImage.replace(rExtension, sAppend); 

rExtension$1にそれを捕捉し、拡張子を探し正規表現です。あなたは、「ここに拡張子を置く」を意味し、$1sAppendの内側に表示されていることがわかります。

EDIT:このソリューションは任意のファイル拡張子で動作します。 http://jsfiddle.net/h4Qsv/