比如有一个字符串str,里面含有若干个字符'a',我想把里面的前八个'a'替换成'abc',
js中的replace函数似乎是不能指定替换次数的,不知是否有类似的函数或者正则式可以实现此功能?
js中的replace函数似乎是不能指定替换次数的,不知是否有类似的函数或者正则式可以实现此功能?
解决方案 »
- 请问一个类的(特权)方法,算不算是形成一个闭包?
- 一个模态窗口上打开另一个模态窗口
- 请问如何验证一个文本框中输入的数据为1-100的整数(急等!)
- 按键和鼠标点击同时执行时触发一个js
- 在一个函数中如何防止另一个函数被执行
- 事关此次加薪的问题:老板出了个难题,打开一个页面时,要求用户不能copy,print,甚至也不能print screen.有没有这样的javascript?
- Easyui TreeGrid 全部展开后垂直滚动条不显示
- 在那里能找到js中对象如(document,window对象)的属性和方法?
- 谁能给我网页中active控键(listview和treeview)的一些例子
- js判断相同cls值问题
- js 文件中 document.getElementsByTagName 失败!
- 改变html后$(document).ready内函数无效
var str="aaaaaaaaaaaaaaaaaaaaaa万恶空间看的范德萨开快点aaaaaaaaaaaaaaaaaa";
alert(str.replace(/a{8}/img,"abc"));
<script type="text/javascript">
var str = 'aaaaaaaaaaaaaaaaaaa';
var arr = str.split('');
var counter = 1;
for (var i = 0; i < arr.length; i ++) {
if (counter <= 8 && arr[i] == 'a') {
arr[i] = 'abc';
counter ++
}
else {
if (counter > 8) break;
}
}
str = arr.join('');
alert(str);
</script>
//查找字符忽略大小写的版本
var str = 'aaaaaaaaaaaaaaaaaaa';
var arr = str.split('');
var counter = 1;
for (var i = 0; i < arr.length; i ++) {
if (counter <= 8 && (arr[i] == 'a' || arr[i] == 'A')) {
arr[i] = 'abc';
counter ++
}
else {
if (counter > 8) break;
}
}
str = arr.join('');
alert(str);
</script>
<script type="text/javascript">
<!--
function myreplace (s,f,r,j) {
var re = new RegExp(f)
for (var i=0; i<j; i++) {
s = s.replace(re,"§§§§");
}
return s.replace(/§§§§/gi,r);
}
var str="aaaa万恶空间看的范德萨开快点aaaaaaaaaaaaaaaaaa"; alert(myreplace(str,/a/,"abc",8));
//-->
</script>
var a='fffffffffffffxxx',
b='f',
c='ffxxxffxxxfffxxxxxggfffff'
i=0;
function ss(v){
return v.replace(/(f)[^f]*(f)?[^f]*(f)?[^f]*(f)?[^f]*(f)?[^f]*(f)?[^f]*(f)?[^f]*(f)?/,function(all){
var arg = arguments,
len = arg.length,
arr = arg[0].split('f');
return arr.join('abc')
});
}alert(ss(a))
alert(ss(b))
alert(ss(c))
乱写的
还好是8个
80个就杯具了
var str = "aqawaearat";
var i = 0;
str = str.replace(/(a)/ig, function() { return ((++i)<=3)? ("abc"): (arguments[1]); });
document.write(str);
呵呵 我倒是觉得是简单办法,不过我想的是用'a'去split 字符串,然后把所得的字符数组中前八个用'abc' join,后面用'a' join,拼出来的就是楼主要的结果了
var reg = new RegExp(c, 'ig');
var i = 0;
while(reg.exec(str) != null) {
var index = reg.lastIndex - c.length;
str = str.slice(0,index) + p + str.slice(reg.lastIndex, str.length);
reg.lastIndex += p.length - c.length;
if(++i > max) break;
}
return str;
}var str="aaaa万恶空间看的范德萨开快点aaaaaaaaaaaaaaaaaa";
var c = 'a';
var p = 'abc';document.write(str_replace(str, c, p, 8));
String.prototype.replaceWithCount = function(regex, replacement, count) {
if(!regex) return;
var p = 0;
return this.replace(regex, function(match) {
return (p++ < count) ? replacement : match;
});
}window.onload = function() {
var s = 'aaaaaaaaaaaaaaaa';
var x = s.replaceWithCount(/a/g, 'b', 8);
alert(x);
}
</script>