我先用indexOf查找了字符位置再替换成空字符,但是不知道为什么最后一个字符替换不了,大神帮看一下
var s = 'cidngicnghcidhgiicdnidh';
var index = -1;
do{
index = s.indexOf('i',index+1);
if(index !== -1){
s = s.replace('i','');
}
}while(index !== -1);
document.write(s);
输出为
最后一个i不知道为啥替换不了咧。
但是如果是替换成“!”就可以了,这是为什么?
var s = 'cidngicnghcidhgiicdnidh';
var index = -1;
do{
index = s.indexOf('i',index+1);
if(index !== -1){
s = s.replace('i','!');
}
}while(index !== -1);
document.write(s);
输出为
index = s.indexOf('i',index+1);你把这行改成 index = s.indexOf('i');这样就对了
替换为空字符串时,会减小字符串长度,同时,index 会增加,导致把 最后一个 i 跳过了, 替换字符串前 打印一下 index 和 字符串 length 即可知道
替换为空,相当于删除了,每次循环去除一个,字符串的排序位置都变化了。