replaceLeftChar(“AAABBAAA”,"A","X")
结果:XXXBBAAA
从字符串左端开始替换A成X,不能替换就截止正则 var reg=/^(A)+/
结果是:XBBAAA
把所有的A替换成了一个X我想一个A换一个X,有多少个A就换成多少个X
单纯用正则,可以实现吗?我觉得还是得结合循环来做?
结果:XXXBBAAA
从字符串左端开始替换A成X,不能替换就截止正则 var reg=/^(A)+/
结果是:XBBAAA
把所有的A替换成了一个X我想一个A换一个X,有多少个A就换成多少个X
单纯用正则,可以实现吗?我觉得还是得结合循环来做?
我只替换左端的,你这个把左右两端的A全部给替换
function replaceLeftChar(src, oldStr, newStr)
{
var reg = new RegExp(oldStr + "+");
return src.replace(reg, function($0){ return (new Array($0.length+1)).join(newStr);});
}
alert(replaceLeftChar("AAABBAAA", "A", "X"));
</script>
function replaceLeftChar(src, oldStr, newStr)
{
var reg = new RegExp(escape(oldStr) + "+");
return src.replace(reg, function($0){ return (new Array($0.length+1)).join(newStr);});
}
alert(replaceLeftChar("AAABBAAA", "(", "X"));
</script>
function replaceLeftChar(src, oldStr, newStr)
{
var reg = new RegExp(escape(oldStr) + "+");
return src.replace(reg, function($0){ return (new Array($0.length+1)).join(newStr);});
}
alert(replaceLeftChar("AAABBAAA", "A", "X"));
</script>
replaceLeftChar("AAABBAAA", "AA", "X") 结果:XABBAAA
replaceLeftChar("AAABBAAA", "AAA", "X") 结果:XBBAAA顺便写个右端处理的,呵呵
上面用的new Array($0.length+1)).join(newStr)确实只适用于一个字符
看下这样是不是你要的效果
<script type="text/javascript">
function replaceLeftChar(src, oldStr, newStr)
{
var regSel = new RegExp(escape(oldStr) + "+");
var regSin = new RegExp(escape(oldStr));
return src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
}
alert(replaceLeftChar("AAABBAAA", "AA", "XX"));
</script>
/*-------输出--------
XXABBAAA
*/
alert(Number("9999999999999.999000000004"));
alert(Number("99999999999999.99999999999"));我想原封不动的转换为数字,但是出来的结果却发生了变化
能使它不变化吗可能是数太大了
从你的例子上,没问题
对于任意的字符还是有点问题,比如
alert(replaceLeftChar("中国ZHONGUO", "中国", "CHINA"));
处理不了
如果这样的话,就不能用escape处理元字符了,因为它会把中文编码,如果要处理这个异常,需要自己另写函数了<script type="text/javascript">
function replaceLeftChar(src, oldStr, newStr)
{
var regSel = new RegExp(oldStr + "+");
var regSin = new RegExp(oldStr);
return src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
}
alert(replaceLeftChar("中国ZHONGUO", "中国", "CHINA"));
</script>
只能替换第一个中国,第二个中国不能替换
从左端开始替换,连续的替换,直至不能替换,中间断层后就中止
function replaceLeftChar(src, oldStr, newStr)
{
var regSel = new RegExp("(" + oldStr + ")+");
var regSin = new RegExp(oldStr, "g");
return src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
}
alert(replaceLeftChar("中国中国ZHONGUO", "中国", "CHINA"));
</script>
function replaceLeftChar(src, oldStr, newStr)
{
var regSel = new RegExp("(" + oldStr + ")+", "i");
var regSin = new RegExp(oldStr, "ig");
return src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
}
alert(replaceLeftChar("中国中国ZHONGUO", "中国", "CHINA"));
</script>
对应左端:var regSel = new RegExp("^(" + oldStr + ")+");
对应右端:var regSel = new RegExp("(" + oldStr + ")+^");
这个不对吗处理完了,结贴
var regSel = new RegExp(oldChar,"g");
只用这一个就可以了
function replaceLeftChar(src, oldStr, newStr)
{
var regSel = new RegExp("(" + oldStr + ")+$", "i");
var regSin = new RegExp(oldStr, "ig");
return src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
}
alert(replaceLeftChar("中国中国ZHONGUO中国中国", "中国", "CHINA"));
</script>如果不确定,比如待替换内容右侧还可能有一些其它字符,那可以这样
<script type="text/javascript">
function replaceLeftChar(src, oldStr, newStr)
{
var regSel = new RegExp("(" + oldStr + ")+(?:(?!" + oldStr + ")[\\s\\S])*$", "i");
var regSin = new RegExp(oldStr, "ig");
return src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
}
alert(replaceLeftChar("中国中国ZHONGUO中国中国ABC", "中国", "CHINA"));
</script>
<script type="text/javascript">
function replaceLeftChar(src, oldStr, newStr)
{
var regSel = new RegExp("^(" + oldStr + ")+", "i");
var regSin = new RegExp(oldStr, "ig");
return src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
}
alert(replaceLeftChar("中国中国ZHONGUO中国中国", "中国", "CHINA"));
</script>如果不确定,比如待替换内容左侧还可能有一些其它字符,那可以这样
<script type="text/javascript">
function replaceLeftChar(src, oldStr, newStr)
{
var regSel = new RegExp("(" + oldStr + ")+", "i");
var regSin = new RegExp(oldStr, "ig");
return src.replace(regSel, function($0){ return $0.replace(regSin, newStr);});
}
alert(replaceLeftChar("ABC中国中国ZHONGUO中国中国", "中国", "CHINA"));
</script>替换全部就没什么好说的了,一个g参数就搞定了
<script type="text/javascript">
function replaceLeftChar(src, oldStr, newStr)
{
var reg = new RegExp(oldStr, "ig");
return src.replace(reg, newStr);
}
alert(replaceLeftChar("ABC中国中国ZHONGUO中国中国", "中国", "CHINA"));
</script>