比如有一个字符串str,里面含有若干个字符'a',我想把里面的前八个'a'替换成'abc',
js中的replace函数似乎是不能指定替换次数的,不知是否有类似的函数或者正则式可以实现此功能?

解决方案 »

  1.   


    var str="aaaaaaaaaaaaaaaaaaaaaa万恶空间看的范德萨开快点aaaaaaaaaaaaaaaaaa";
    alert(str.replace(/a{8}/img,"abc"));
      

  2.   

    如果只是查找单个字符来替换的话,用个笨办法也可以做到
    <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>
      

  3.   

    <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] == 'A')) {
            arr[i] = 'abc';
            counter ++
        }
        else {
            if (counter > 8) break;
        }
    }
    str = arr.join('');
    alert(str);
    </script>
      

  4.   

    这样行不行
    <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>
      

  5.   

    是吧f替换成abc
    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个就杯具了
      

  6.   

    替换前3个,多个的时候把3改为N。
    var str = "aqawaearat";
    var i = 0;
    str = str.replace(/(a)/ig, function() { return ((++i)<=3)? ("abc"): (arguments[1]); });
    document.write(str);
      

  7.   


    呵呵 我倒是觉得是简单办法,不过我想的是用'a'去split 字符串,然后把所得的字符数组中前八个用'abc' join,后面用'a' join,拼出来的就是楼主要的结果了
      

  8.   

    恩,是的,这样还可以做到查找多个字符,比如查找abc,就用abc来拆。
      

  9.   

    function str_replace(str, c, p, max) {
    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));
      

  10.   

    <script type="text/javascript">
    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>