<script>
var str="2$5,6$8,3$9";
str = str.replace(/$/g,",");
var a = str.split(",");
document.write(a);
document.write("<br />");
function replace01(arr)
{
for(var i = 0;i<arr.length;i++)
{
if(a[i] = 2)
{
a[i+1]=1;
};
};
}
replace01(a);
</script>想把2$5换成2$1,不过脚本在浏览器中运行速度过慢,无法修改,求解
var str="2$5,6$8,3$9";
str = str.replace(/$/g,",");
var a = str.split(",");
document.write(a);
document.write("<br />");
function replace01(arr)
{
for(var i = 0;i<arr.length;i++)
{
if(a[i] = 2)
{
a[i+1]=1;
};
};
}
replace01(a);
</script>想把2$5换成2$1,不过脚本在浏览器中运行速度过慢,无法修改,求解
var str="2$5,6$8,3$9";
str = str.replace(/\$/g,",");
var a = str.split(",");
//上两句可以由 var a = str.split(/\$|,/);代替
document.write(a);
document.write("<br />");
function replace01(arr)
{
for(var i = 0;i<arr.length;i++)
{
if(a[i] = 2)
{
a[i+1]=1;
};
};
}
replace01(a);
var str="2$5,6$8,3$9";
str = str.replace(/2\$5/, '2$1');
alert(str)
var str="2$5,6$8,3$9";
str = str.replace(/\$/g,",");
var a = str.split(",");
//上两句可以由 var a = str.split(/\$|,/);代替
document.write(a);
document.write("<br />");
function replace01(arr)
{
for(var i = 0, il = arr.length;i<il;i++)
{
if(a[i] = 2)
{
a[i+1]=1;
};
};
}
replace01(a);
除去上面朋友说的几个问题,LZ最大的问题是思路,而且也不严谨
如果按你的思路
2$5,6$8,3$9
12$5,6$8,3$9
2$5,6$8,3$9,2$51
以上三组字符串,将会得到什么结果呢?是你想要的吗?所以,如果你仅仅是需要将2$5转换成2$1,按你代码的思路
第一种方法:$号不需要替换,直接以,号做分隔取得数组判断替换即可
var str="12$5,6$8,2$5,3$9,2$51";
var arr=str.split(',');
for(var i=0;i<arr.length;i++){
if(arr[i]=='2$5'){
arr[i]='2$1';
}
}
str=arr.toString();
alert(str)
第二种:正则替换
var str="2$5,12$5,6$8,2$5,2$51";
str =','+str+','//为了防止出现类似于:12$5,2$51 被错误替换,首尾各加一个,号;这样 [,2$5,]将会是唯一正确匹配的项
str = str.replace(/,2\$5,/g, ',2$1,');
str=str.substring(1,str.length-1);//去除之前首尾增加的,号
alert(str)造成死循环的问题出在判断语句上。if(a[i]=2)这个条件将永远成立,因此将永无休止的执行下去,就会出现像楼上版主说的一样,总在最后额外增加一项,然后循环往复
应该i=5(最后一项),动态增加一项后arr.length变为7,执行for的i++后i为6,小于7,如此死循环。。arr.length搞错了