第五課:字串的擴充和修複

來源:互聯網
上載者:User

標籤:style   io   ar   使用   sp   strong   on   bs   cti   

1.repeat方法:將一個字串重複自身n次。比如:repeat("chaojidan",2)   -> chaojidanchaojidan

方法1:

function repeat(str,n){

  return Array.prototype.join.call({length:n+1},str);  

//在類數組{length:n+1}上下文下執行join方法,並傳入str。也就是用str來分隔類數組的選項,類數組是空,所以就有n個str分隔n+1個"",得到的結果就是n個str串連。

}

方法2:

function repeat(str,n){

  var s = str ,total = "";

  while(n>0){              

//假設n是5,n%2後,等於1,因此total = str.s=strstr。n=2.第二次迴圈:s=strstrstrstr,n=1.第三次迴圈total = strstrstrstrstr,break,跳出迴圈,返回total,剛好是str重複了5次的字串

    if(n%2 ==1){     

      total + =s;     //這裡是2的0次方,也就是1,所有的正整數,都可以使用1,2,4,8....進行組合。比如:3=1+2,5=1+4,7=1+2+4.

    }

    if(n==1)  break;

    s+=s;    //這裡利用的是2的冪次方,2,4,8.....

    n = n>>1;

  }

  return total ;

}

2.取字串所有位元組的長度:str.charCodeAt(i) >255 就把str的長度加一次就OK了.

3.轉換駝峰風格:str.replace(/[-_][^-_]/g,function(match){return match.charAt(1).toUpperCase();})  

//-_在[]中,不需要使用\,並且^在[]中是代表反的意思,就是遇到-a或_a,就被替換成A(match就是正則匹配的字串_a,然後取a,並且大寫)

4.轉換為底線風格:str.replace(/([a-z\d])([A-Z])/g,‘$1_$2‘).replace(/\-/g,‘_‘).toLowerCase();

//第一個replace,匹配cA,或者4A的字串,然後用c_A或4_A替換。$1代表第一個子運算式。第二個replace就是使用_替換-。由於-不在[]中,所以需要加\。

5.去掉字串中的html標籤:str.replace(/<[^>]+>/g,‘‘),這裡面會把script標籤去掉,但是不會去掉script中的js指令碼

6.去掉script標籤,並且移除裡面的js指令碼:str.replace(/<script[^>]*>(\S\s)*?)<\/script>/img,‘‘)      //     /需要用\,防止轉義。

//(\S\s)*?)儘可能少的匹配,非貪婪匹配。舉個例子:<script>aaa</script>dddd<script>bbbb</script>,會先匹配<script>aaa</script>,再匹配<script>bbbb</script>,如果沒加?,將是貪婪匹配,將會把<script>aaa</script>dddd<script>bbbb</script>全部匹配掉,連字號串dddd都去掉了。

7.將字串經過html轉義,得到適合在頁面中顯示的內容.

str.replace(/&/g,‘&amp;‘).replace(/</g,‘&lt;‘).replace(/>/g,‘&gt;‘).replace(/"/g,‘&quot;‘).replace(/‘/g,‘&#39;‘);

8.將字串的html實體字元換成對應字元:

跟7相反,只是多了一個replace(/&#([\d]+);/g,function($0,$1){  return String.fromCharCode(parseInt($1,10))  })   //$1就是第一個子運算式匹配項。

9.trim:str.replace(/^\s+ | \s+$/g,‘‘)   ,IE或早期的標準瀏覽器,把許多本屬於空白的字元沒有列為\s中,因此會有bug。不過,又何必執著相容淘汰的瀏覽器呢。

 

加油!

第五課:字串的擴充和修複

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.