0

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

字符串就像'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

请查看并建议任何可能的方法来做到这一点。

谢谢

4

6 回答 6

0

您可以使用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')
}
于 2013-05-07T07:35:46.227 回答
0

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

main_str.indexOf('str') != -1
于 2013-05-07T07:37:24.450 回答
0

尝试,

var str="1.png,2.png,3.jpg,4.gif";
var newStr=str.replace(".png",".jpg");
于 2013-05-07T07:37:40.310 回答
0

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

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

但这里更好的方法是使用replace

main_str.replace(str, new_str)
于 2013-05-07T07:38:19.023 回答
0

您可以使用替换方法:

var str = '1.png,2.png,3.jpg,4.gif';
var result=str.replace('1.png','1.jpg')
于 2013-05-07T07:40:54.510 回答
0

你可以这样做:

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"

于 2013-05-07T07:44:48.683 回答