首頁 >web前端 >js教程 >javascript框架設計閱讀筆記之字串的擴充與修復_javascript技巧

javascript框架設計閱讀筆記之字串的擴充與修復_javascript技巧

WBOY
WBOY原創
2016-05-16 16:29:391418瀏覽

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-zd])([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>]*>(Ss)*?)</script>/img,'')     

 /需用,防止轉義。

//(Ss)*?)盡可能少的匹配,非貪婪匹配。舉例:<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,'&').replace(/,'/g,'>').replace(/"/g,'" ').replace(/'/g,''');

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。不過,又何必執著與淘汰的瀏覽器。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn