标签:style blog class c code java
来自:http://blog.sina.com.cn/s/blog_65c2ec5e0101j133.html
方法一:
通常就是把字符串分割成数组,再对数组操作。
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、这个去重的结果其实是倒着来排序的,就是说重复字符出现在前面的都被置空了,是按一个字符从后往前出现的顺序排的。
标签:style blog class c code java
原文地址:http://www.cnblogs.com/live9080/p/3738565.html