0

这是我的代码:

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

我想将最后 7 个字符 ( med.png)替换为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

不使用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 回答
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 回答
0

只需将“-”添加到您的正则表达式和替换字符串:

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

或者,如果您希望文件扩展名可变:

myStr = myStr .replace(/-([^-]*)\.([a-z]+)$/, "-big.$2");
于 2012-11-05T09:50:21.680 回答
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

如果你想使用字符串函数 -

var myStr = "/private_images/last-edit/image-work-med.png";
var cleanedupStr = myStr.slice(0, myStr.lastIndexOf("-"));

字符串切片

于 2012-11-05T10:01:23.680 回答
0

如果您知道它将是一个 .png 文件:

var ex = new Regex(@"-\w*.png$");
var myStr = "/private_images/last-edit/image-work-med.png";​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
myStr = ex.Replace(myStr, "-big.png");

它可以工作,但如果它是 jpg 它不会...

于 2012-11-05T10:03:29.560 回答