0

これは私のコードです:

​var myStr = "/private_images/last-edit/image-work-med.png";​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

med.png最後の 7 文字 ( ) をに置き換えたいと思いbig.pngます。または、ご覧のとおり、-分割後の最後のオカレンスです。

どうすればいいですか?私は正規表現について考えていますが、私は正規表現のチャンピオンではありません。試した:

myStr = myStr .replace(/-([^-]*)$/, "big" + '$1');

-ただし、最後の出現ではなく、最後の を置き換えます。結果は/private_images/last-edit/image-workbigmed.png

4

8 に答える 8

2

告白します: 私は正規表現も得意ではありません。

を使って分割するのはどうsplitですか?簡潔ではありませんが、理解しやすいです。

var myStr = "/private_images/last-edit/image-work-med.png";​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
var strs = myStr.split('-');

// Change the last element.
strs[strs.length - 1] = "big.png";

// And put back the right string.
myStr = strs.join('-');
于 2012-11-05T09:52:41.093 に答える
1

正規表現を使用するか、いくつかの文字列メソッドを使用して意図を明確にすることができます。

var idx = myStr.lastIndexOf("-");
var newStr = myStr.substring(0, idx) + "big.png";
于 2012-11-05T09:49:14.667 に答える
1
var url = "/private_images/last-edit/image-work-med.png"; 
var index = url.lastIndexOf('-');
url = url.substring(0, index+1);
var url2 = "big.png";
var output = url.concat(url2); alert(output);

これをチェックして

于 2012-11-05T11:17:35.123 に答える
1

使用せずに使用RegExpできます:

var str = "/private_images/last-edit/image-work-med.png"
   ,replace = 'big.png'
   ,nwstr = str.slice(0,str.lastIndexOf('-')+1)+replace;
//=> nwstr now "/private_images/last-edit/image-work-big.png"

より「機能的」:

var nwstr = function(s){
              return s.replace(s.substr(-7),'');}(
               '/private_images/last-edit/image-work-med.png'
           )+'big.png'
于 2012-11-05T09:59:50.480 に答える
0

単に置換を使用しない理由:

var myStr = "/private_images/last-edit/image-work-med.png";​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

var newStr = myStr.replace("med.png", "big.png");

質問で指定された要件によれば、これで十分です。

于 2012-11-05T09:59:18.523 に答える
0

'-' を正規表現と置換文字列に追加するだけです:

myStr = myStr .replace(/-([^-]*)\.png$/, "-big.png");

または、ファイル拡張子を可変にしたい場合:

myStr = myStr .replace(/-([^-]*)\.([a-z]+)$/, "-big.$2");
于 2012-11-05T09:50:21.680 に答える