加载中…
个人资料
剑华一笑
剑华一笑
  • 博客等级:
  • 博客积分:0
  • 博客访问:98
  • 关注人气:33
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

JS去除重复字符串

(2013-09-03 16:43:31)
标签:

js

it

分类: JS
方法一:
    通常就是把字符串分割成数组,再对数组操作。
   
    var str = "aabdeegdcffdsf",
        result = [],
        tempStr = "";
    var removeDuplicate = function ( str ){
        var arr = str.split('');//把字符串分割成数组
        //arr.sort();//排序
        for(var i = 0; i < arr.length; i++){
            if(arr[i] !== tempStr){
                result.push(arr[i]);
                tempStr = arr[i];
            }else{
                continue;
            }
        }
        return result.join("");
    }
    console.log(removeDuplicate(str)); //abdegdcfdsf

方法二:

    var removeDuplicate2 = function(str){
        var reg = /(.)(?=.*\1)/g;
        var result = str.replace(reg, "");
        return result;
    }
    console.log(removeDuplicate(str)); //abdegdcfdsf
    说明:
        1、var reg =/(.)(?=.*\1)/g;
        2、.匹配任意字符,但只能匹配任意字符中的一个;
        3、(.)加上()就是将匹配的该字符存储起来供以后引用;
        4、(?=)预搜索(也有叫断言的,也有叫预查的),指明某个字符的右侧是什么,但不包含这部分,只取这个‘某个字符’,如:p(?=ing)匹配字符串ping时匹配成功,但匹配到的字符是p不是ping;
        5、(?=.*\1) 这个\1就是指的前面(.)的这个字符,之前说它被加上小括号就是被存储起来了,现在\1就是取存储的第一个(共一个):
            *匹配次数,也有人称之为量词,指出现任意次
            .*指出现任意次任意字符
        6、(.)(?=.*\1)指第一个匹配字符,如果右侧出现的内容中包含该字符时就匹配上该字符;
        7、 g指globle,全局匹配模式,匹配所有字符串;
        8、这个去重的结果其实是倒着来排序的,就是说重复字符出现在前面的都被置空了,是按一个字符从后往前出现的顺序排的。




 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有