在javascript中查找并替换带点的字符串

时间:2013-05-07 07:34:17

标签: javascript

如果字符串中存在,我想查找并替换字符串的一部分。

字符串就像'1.png,2.png,3.jpg,4.gif'

我希望在此字符串中找到1.png,然后将其替换为1.jpg

我无法使用search()indexOf()方法找到它。

由于我无法找到它,我无法取代它。

我正在尝试这种方式

var str = '1.png'
var new_str = '1.jpg'
var main_str = '1.png,2.png,3.jpg,4.gif';

if(main_str.indexOf(str) > 0){
alert('found')
// now replace it with new_str
}
else{
alert('not found')
}

我尝试了以下组合,但这些都无效。

main_str.indexOf('str') > 0
main_str.indexOf(/\str/) > 0
main_str.indexOf(/\"str"/) > 0
main_str.indexOf(str) > 0

请参阅并建议任何可行的方法。

由于

6 个答案:

答案 0 :(得分:1)

您可以使用replace进行替换:

main_str = main_str.replace(str, new_str)

如果要替换多个匹配项,请使用

main_str = main_str.replace(new RegExp(str,'g'), new_str)

如果您想在更换前发出警报,请执行以下操作:

var r = new RegExp(str,'g');
if (main_str.match(r)) {
   alert('found')
   main_str = main_str.replace(r, new_str)
} else {
   alert('not found')
}

答案 1 :(得分:1)

由于main_str在索引0处包含1.png,因此您无法使用支票main_str.indexOf('str') > 0找到它。请记住,如果找不到javascript则返回-1,而不是零。因此,您必须将您的条件更新为:

main_str.indexOf('str') != -1

答案 2 :(得分:1)

试,

var str="1.png,2.png,3.jpg,4.gif";
var newStr=str.replace(".png",".jpg");

答案 3 :(得分:1)

字符串中1.png的索引实际为0,这就是您的条件失败的原因。正确的方法是检查索引是否为负数,因为如果找不到子字符串,indexOf返回-1:

if(main_str.indexOf(str) >= 0){

但更好的方法是使用replace

main_str.replace(str, new_str)

答案 4 :(得分:1)

你可以使用替换方法:

var str = '1.png,2.png,3.jpg,4.gif';
var result=str.replace('1.png','1.jpg')

答案 5 :(得分:1)

你可以这样做:

var str = "1.png,2.png,3.jpg,4.gif";
var re = /(.png)/i;
var found = str.match(re);

//now ask the user or do whatever else is needed
if (found){
  found = confirm("Really overwrite");
}

if (found){
  str = str.replace(re, ".jpg");
}

我允许字符串现在也是大写或大小写,例如".Png"".PNG"