jquery實現(xiàn)去除重復(fù)字符串的方法小結(jié)

字號:


    這篇文章主要介紹了jquery實現(xiàn)去除重復(fù)字符串的方法,結(jié)合實例形式總結(jié)了三種常用的字符串去重操作技巧,需要的朋友可以參考下
    本文實例總結(jié)了jquery實現(xiàn)去除重復(fù)字符串的方法。分享給大家供大家參考,具體如下:
    這里總結(jié)了三種去除重復(fù)字符串的方法:
    把例子貼上,用jQuery方便些,首先要搭好環(huán)境,就是在同一目錄下(同一文件夾下)保證有所使用的jquery1.8.1(如果是其他版本就在html代碼中作相應(yīng)改動)
    第一:
    <html>
    <head>
    <script src="jquery-1.8.1.js"></script>
    <SCRIPT LANGUAGE="JavaScript">
    $(function(){
     $('#delRepeat').click(function(){
      var str = $('#repeatValue').val();
       var strArr=str.split("");//把字符串分割成一個數(shù)組
       strArr.sort();//排序
       var result=new Array();//創(chuàng)建出一個結(jié)果數(shù)組
       var tempStr="";
       for(var i in strArr)
       {
         if(strArr[i] != tempStr)
         {
          result.push(strArr[i]);
          tempStr=strArr[i];
         }
         else
         {
          continue;
         }
       }
       $('#noRepeat').val(result.join(""))//把數(shù)組連成字符串并展示到頁面
     })
    })
    </SCRIPT>
    </head>
    <body>
    原值<input id="repeatValue" type="text" ><input id="delRepeat" type="button" value="去重">
    <input type="text" id="noRepeat">
    </body>
    </html>
    說明:通常就是把字符串分割成數(shù)組,再對數(shù)組操作,相對來說數(shù)組的方法多些,方便些,最后再join成字符串
    關(guān)于sort()方法,之所以先對數(shù)組元素排序,就是因為可以把相同的字符歸到一起,就不用再雙層循環(huán),要不然就得拿到每個元素,和剩余的逐個比對,這個sort會按照ASCII 字符順序進行升序排列
    第二:
    <html>
    <head>
    <script src="jquery-1.8.1.js"></script>
    <SCRIPT LANGUAGE="JavaScript">
    $(function(){
     $('#delRepeat').click(function(){
      var str = $('#repeatValue').val();
       var strArr=str.split("");
       //排序
       strArr.sort();
        var result =$.unique(strArr);
       $('#noRepeat').val(result.join(""));
     })
    })
    </SCRIPT>
    </head>
    <body>
    原值<input id="repeatValue" type="text" ><input id="delRepeat" type="button" value="去重">
    <input type="text" id="noRepeat">
    </body>
    </html>
    說明,這個unique方法確實方便,但有兩個缺陷:
    1、只對數(shù)組有效(直接字符串不行),并且該數(shù)組不能是數(shù)字數(shù)組,
    2、只對相鄰的重復(fù)元素有效,隔開的不行。
    例如:[a,a,b,b,c,c]---unique----》[a,b,c]有效
    [a,a,b,b,c,c,a]--unique-->[a,b,c,a]元素a仍然重復(fù),無效
    因此調(diào)用unique之前必須調(diào)用一下sort方法將其重復(fù)元素重排一下,挨在一起
    但也因為調(diào)用了sort方法,順序給重排了如:[b,b,c,c,a,a]---unique-->[a,b,c]不是[b,c,a]
    第三:
    <html>
    <head>
    <script src="jquery-1.8.1.js"></script>
    <SCRIPT LANGUAGE="JavaScript">
    $(function(){
     $('#delRepeat').click(function(){
      var str = $('#repeatValue').val();
         var reg = /(.)(?=.*\1)/g;//預(yù)搜索方式(有的叫斷言)
         var result = str.replace(reg, "");
         $('#noRepeat').val(result);
     })
    })
    </SCRIPT>
    </head>
    <body>
    原值<input id="repeatValue" type="text" value="aca" ><input id="delRepeat" type="button" value="去重">
    <input type="text" id="noRepeat">
    </body>
    </html>
    說明:
    var reg =/(.)(?=.*\1)/g;
    .匹配任意字符,但只能匹配任意字符中的一個
    (.)加上()就是將匹配的該字符存儲起來供以后引用
    (?=)預(yù)搜索(也有叫斷言的,也有叫預(yù)查的),指明某個字符的右側(cè)是什么,但不包含這部分,只取這個‘某個字符'
    如:p(?=ing)     匹配字符串ping時匹配成功,但匹配到的字符是p不是ping
    (?=.*\1) 這個\1就是指的前面(.)的這個字符,之前說它被加上小括號就是被存儲起來了,現(xiàn)在\1就是取存儲的第一個(共一個)
    *匹配次數(shù),也有人稱之為量詞,指出現(xiàn)任意次
    .*指出現(xiàn)任意次任意字符
    (.)(?=.*\1)指第一個匹配字符,如果右側(cè)出現(xiàn)的內(nèi)容中包含該字符時就匹配上該字符
     g  指globle,全局匹配模式,匹配所有字符串
    這個去重的結(jié)果其實是倒著來排序的,就是說重復(fù)字符出現(xiàn)在前面的都被置空了,是按一個字符從后往前出現(xiàn)的順序排的
    希望本文所述對大家jQuery程序設(shè)計有所幫助。