ECMAScript6--5.字符串?dāng)U展

1.字符串新增特性

  • Unicode表示法

  • 遍歷接口

  • 模板字符串

  • 新增方法(10種)

    eg:
    1.Unicode表示法

    {
     console.log('a','\u0061');//a a
     
     //碼值大于(0xFFFF)兩個(gè)字節(jié)的最大編碼的時(shí)候會(huì)怎么樣呢狡汉?
     console.log('s','\u20BB7');
    //輸出:s []7(當(dāng)成了兩個(gè)字符修己,第一個(gè)不是unicode編碼所以沒(méi)有對(duì)應(yīng)的字符沒(méi)有正常顯示出來(lái))
    
     //在ES6中怎么處理unicode編碼大于0xFFFF這么一個(gè)編碼呢?
      --用{}把unicode編碼包起來(lái)就可以了;
     console.log('s-1','\u{20BB7}'); //s-1  吉   
    }
    

    2.codePointAt--取字符的碼值

     {
     //'吉'的unicode編碼\u{20BB7}大于0xFFFF盆顾,當(dāng)成了兩個(gè)字符醉蚁;
     /*它的碼值是大于兩個(gè)字節(jié)的拉背,這個(gè)時(shí)候就把它處理成4個(gè)字節(jié)了住闯,計(jì)算長(zhǎng)度的時(shí)候
     每?jī)蓚€(gè)字節(jié)是一個(gè)長(zhǎng)度,所以這個(gè)地方長(zhǎng)度是2拂酣;*/
     let s='吉'; 
     let a = 'a';
     
     //ES5:
     console.log('length',s.length, a.length); //length 2  1
    
     //ES5:取編碼的時(shí)候的方法:charAt();--對(duì)unicode處理是不到位的秋冰;
     //charCodeAt只取兩個(gè)字節(jié);
     consle.log('0',s.charAt(0)); //取第一個(gè)位置的字符 結(jié)果:亂碼
     consle.log('1',s.charAt(1)); //取第二個(gè)位置的字符 結(jié)果:亂碼
     console.log('at0',s.charCodeAt(0)); //取第一個(gè)字符unicode編碼的碼值  at0 55362
     console.log('at1',s.charCodeAt(1)); //取第二個(gè)字符unicode編碼的碼值  at1 57271
    
    
     //ES6:取字符的碼值codePointAt()
      let s1='吉a'; 
      console.log('length',s1.length); // length  3
      
      //取第一個(gè)字符的碼值:code0 134071(十進(jìn)制的)
      //(第一個(gè)字符是用4個(gè)字節(jié)存儲(chǔ)的婶熬,取第一個(gè)字符位置的時(shí)候codePointAt會(huì)計(jì)算四個(gè)字節(jié)的碼值)
      console.log('code0',s1.codePointAt(0));
      
      //看碼值對(duì)應(yīng)的是什么字符(轉(zhuǎn)換成16進(jìn)制)code0 20bb7
      console.log('code0',s1.codePointAt(0).toString(16));
      
      //code1  57271(取1的時(shí)候就是只取那個(gè)字符的后兩個(gè)字節(jié))
      console.log('code1',s1.codePointAt(1));
      
      //就會(huì)明白了取1的時(shí)候取了兩個(gè)字節(jié)剑勾,而不是從第4個(gè)字節(jié)之后去取
      console.log('code2',s1.codePointAt(2)); // code2 97  (a)
      
     }
    

3.formCharCode--根據(jù)碼值給出對(duì)應(yīng)的字符

    {
        //ES5和ES6最大的區(qū)別就是能不能處理unicode字符
        (大于0xFFFF--大于兩個(gè)字節(jié)的unicode字符);
        
        //ES5:
        console.log(String.formCharCode("0x20bb7")); //亂碼
   
        //ES6:
        console.log(String.fromCodePoint("0x20bb7")); //吉
   
    }

4.字符串遍歷器接口:let of 遍歷器

通過(guò)字符串的遍歷器接口可以正常處理字符串中包含unicode編碼大于0xFFFF的情況赵颅;

    {
        let str ='\u{20bb7}abc';
        
        //ES5:遍歷
        for(let i=0;i<str.length;i++){
            console.log('ES5',str[i]); //亂碼 亂碼 a b c
        }
        
        //ES6:
        for(let code of str){
            console.log('ES6:',code); //吉 a b c
        }
    }

5.includes && startsWith && endsWith

1.includes:判斷字符串中是否包含某些字符
2.startsWith &&endswith:判斷一個(gè)字符串是不是以某些字符為起始或截止

   {
    //判斷字符串中是否包含某些字符
    //判斷字符串中是不是包含r字符
    let str ="string";
    console.log('includes:',str.includes("r")); // includes true
    
    //一個(gè)字符串是不是以某些字符為起始或截止
    //判斷是不是以str開(kāi)始的
    console.log('start',str.startsWith('str')); //start true
    
    //判斷是不是以ng截止的
    console.log('end',str.endsWith('ng')); //end  true
    }
    
    {
        //重復(fù)--字符串的復(fù)制功能
        let str = 'abc';
        
        //ES6:repeat(數(shù)字)  數(shù)字:指定重復(fù)的次數(shù)
        console.log(str.repeat(2)); //abcabc
    }

6.模板字符串--把數(shù)據(jù)和模板最后拼成一個(gè)帶結(jié)果的字符串

    {
        let name ="list";
        let info = "Hello world!"
        
        let m =`i am ${name},${info}`;//(`鍵盤(pán)數(shù)字1左邊的按鍵)
        console.log(m); //i am list,hello world!
    }

7.padStart && padEnd

ES6沒(méi)有實(shí)現(xiàn)虽另,ES7的一個(gè)草案,加了babel--polyfill這個(gè)庫(kù)的話也是可以在ES6中使用的性含;
padStart:補(bǔ)白的作用--向前補(bǔ)洲赵;
padEnd: 補(bǔ)白的作用--向后補(bǔ)鸳惯;

    {
        //padStart 補(bǔ)白的作用--向前補(bǔ)商蕴;(例如:日期小于10的01-09可以用這個(gè))
            API返回的最終結(jié)果就是要求第一個(gè)參數(shù)是長(zhǎng)度
           (api返回的字符串必須滿足第一個(gè)參數(shù)指定的長(zhǎng)度)叠萍,如果長(zhǎng)度不夠第二個(gè)參數(shù)要補(bǔ)什么
        console.log('1'.padStart(2,'0')); //01
        
        //padEnd 向后補(bǔ)白;
        console.log('1'.padEnd(2,'0')); //10
        
    }

8.標(biāo)簽?zāi)0?/strong>

作用:
1.在過(guò)濾html字符串的時(shí)候(在防止xss攻擊的時(shí)候用這個(gè)處理)
2.處理多語(yǔ)言轉(zhuǎn)換的時(shí)候绪商;

{
 let user ={
      name:'list',
      info:'hello world'
  };
        
 console.log(abc`i am ${user.name},${user.info}`);//輸出:i am ,,,listhello world
 function abc(s,v1,v2){
      //["i am",",","",raw:Array[3]] "list" "hello world"
      console.log(s,v1,v2); 
      return s+v1+v2;
   }
    
 }

9.raw

raw對(duì)所有的斜杠進(jìn)行了轉(zhuǎn)義苛谷,斜杠之前加了斜杠,斜杠是不生效的格郁;

    {  
        console.log(string.raw'Hi\n${1+2}'); //Hi\n3(\n換行符并沒(méi)有生效)
        console.log('Hi\n${1+2}'); // Hi   3
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腹殿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子例书,更是在濱河造成了極大的恐慌锣尉,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件决采,死亡現(xiàn)場(chǎng)離奇詭異自沧,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)树瞭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)拇厢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人晒喷,你說(shuō)我怎么就攤上這事孝偎。” “怎么了凉敲?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵衣盾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我荡陷,道長(zhǎng)雨效,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任废赞,我火速辦了婚禮徽龟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘唉地。我一直安慰自己据悔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布耘沼。 她就那樣靜靜地躺著极颓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪群嗤。 梳的紋絲不亂的頭發(fā)上菠隆,一...
    開(kāi)封第一講書(shū)人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼骇径。 笑死躯肌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的破衔。 我是一名探鬼主播清女,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼晰筛!你這毒婦竟也來(lái)了嫡丙?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤读第,失蹤者是張志新(化名)和其女友劉穎曙博,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體怜瞒,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡羊瘩,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盼砍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尘吗。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖浇坐,靈堂內(nèi)的尸體忽然破棺而出睬捶,到底是詐尸還是另有隱情,我是刑警寧澤近刘,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布擒贸,位于F島的核電站,受9級(jí)特大地震影響觉渴,放射性物質(zhì)發(fā)生泄漏介劫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一案淋、第九天 我趴在偏房一處隱蔽的房頂上張望座韵。 院中可真熱鬧,春花似錦踢京、人聲如沸誉碴。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)黔帕。三九已至,卻和暖如春蹈丸,著一層夾襖步出監(jiān)牢的瞬間成黄,已是汗流浹背呐芥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奋岁,地道東北人贩耐。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像厦取,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子管搪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 字符的 Unicode 表示法 codePointAt() String.fromCodePoint() 字符串的...
    卞卞村長(zhǎng)L閱讀 749評(píng)論 0 0
  • ES6加強(qiáng)了對(duì)Unicode的支持虾攻,并且擴(kuò)展了字符串對(duì)象。 字符的Unicode表示法: JavaScript允許...
    呼呼哥閱讀 783評(píng)論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法更鲁,類(lèi)相關(guān)的語(yǔ)法霎箍,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法澡为,異常的語(yǔ)法漂坏,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,631評(píng)論 18 399
  • 園中翠竹根連根, 雨后春筍眾兒孫媒至。 一旦長(zhǎng)成云連翠顶别, 簇簇相擁抱成林。 并抗風(fēng)雨迎曉日拒啰, 同敵雪霜近黃昏驯绎。 雨露春...
    清風(fēng)明月馮耀杰閱讀 276評(píng)論 1 8
  • 我住的這個(gè)宇宙 遵循著二十四小時(shí)的法則 萬(wàn)物皆有定數(shù) 自生自養(yǎng) 開(kāi)出了結(jié)果 下一個(gè)宇宙 長(zhǎng)成什么模樣
    地球最后的夜晚閱讀 248評(píng)論 0 4