字符串常用方法總結(jié)

  1. 字符串對象的屬性

  2. 字符串對象的方法

    (說明: 底色為土黃色的文字部分主要標(biāo)明改部分的主要特征標(biāo)簽)


String對象屬性

  1. length 屬性

    用于獲取字符串長度, 在js中每個中文漢字只表示一個字符

  2. prototype屬性

    用來給對象添加屬性或方法,常用來擴(kuò)展js內(nèi)置對象

     // 使用 prototype 擴(kuò)展 String的屬性,為其添加去掉首尾空格的方法
     String.prototype.trim = function(){
         return this.replace(/^\s*|\s*$/g, '');
     }
    
String 對象方法(字符串的增刪改查) -> 關(guān)注參數(shù)和返回值(封裝的方法主要關(guān)注參數(shù)和返回值

  1. 獲取類方法

    • charAt() -> stringObject.charAt(index) 單參數(shù),返回單字符

      charAt()方法可用來獲取指定位置的字符串,index為字符串索引值.從0開始到string.leng - 1,若不在這個范圍將返回一個空字符串

    • charCodeAt() 單參數(shù),返回單個編碼值

      charCodeAt()方法可返回指定位置的字符的Unicode編碼

        var str = 'abcde';
        console.log(str.charCodeAt(0));        //返回97
      
    • fromCharCode() 多參數(shù),返回字符串

      fromCharCode()可接受一個或多個Unicode值,然后返回一個字符串

        String.fromCharCode(97, 98, 99, 100, 101)    //返回abcde
      
  2. 查找類方法

    • indexOf() 兩參數(shù),返回字符串 + 參數(shù)不為負(fù)

      用來檢索指定的字符串值在字符串中首次出現(xiàn)的位置,參數(shù)不能為負(fù)值

        var str = 'abcdeabcde';
        console.log(str.indexOf('a', 3));    // 返回5
        console.log(str.indexOf('bc'));      // 返回1
      
    • lastIndexOf() 兩參數(shù),返回字符串 + 從后向前

      它返回的是一個指定的子字符串值最后出現(xiàn)的位置,其檢索順序是從后向前

        var str = 'abcdeabcde';
        console.log(str.lastIndexOf('a'));    // 返回5
        console.log(str.lastIndexOf('a', 3));    // 返回0 從第索引3的位置往前檢索
      
    • search() 單參數(shù),返回位置標(biāo)識 + 返回?cái)?shù)字 + 可正則

      用于檢索字符串中指定的子字符串,或檢索與正則表達(dá)式相匹配的子字符串。它會返回第一個匹配的子字符串的起始位置,如果沒有匹配的,則返回-1。

        var str = 'abcDEF';
        console.log(str.search('c'));    //返回2
        console.log(str.search('d'));    //返回-1
        console.log(str.search(/d/i));    //正則 返回3
      
    • match(substr) / match(regexp) 單參數(shù) + 返回匹配的數(shù)組 + 可正則

      在字符串內(nèi)檢索指定的值,或找到一個或多個正則表達(dá)式的匹配。

      如果參數(shù)中 傳入沒有進(jìn)行全局匹配的正則表達(dá)式(不帶/g) ,那么match()方法會從開始位置執(zhí)行一次匹配,如果沒有匹配到結(jié)果,則返回null。否則則會返回一個數(shù)組,該數(shù)組的第0個元素存放的是匹配文本,除此之外,返回的數(shù)組還含有兩個對象屬性index和input,分別表示匹配文本的起始字符索引和stringObject 的引用(即原字符串)。

      var str = '1a2b3c4d5e';
      console.log(str.match('h'));    //返回null
      console.log(str.match('b'));    //返回["b", index: 3, input: "1a2b3c4d5e"]
      console.log(str.match(/b/));    //返回["b", index: 3, input: "1a2b3c4d5e"]
      

      如果參數(shù)傳入的是具有全局匹配的正則表達(dá)式(帶有/g),那么match()從開始位置進(jìn)行多次匹配,直到最后。如果沒有匹配到結(jié)果,則返回null。否則則會返回一個數(shù)組,數(shù)組中存放所有符合要求的子字符串,并且沒有index和input屬性

      var str = '1a2b3c4d5e';
      console.log(str.match(/h/g));    //返回null
      console.log(str.match(/\d/g));    //返回["1", "2", "3", "4", "5"]
      
  3. 截取類方法 特點(diǎn) 部分參數(shù)可為負(fù)值

    • substring(start,end) 兩個參數(shù),返回字符串 + 參數(shù)不為負(fù)數(shù)

      var str = 'abcdefg';
      console.log(str.substring(1, 4));    //返回bcd
      console.log(str.substring(1));    //返回bcdefg
      
    • slice(start,end) 兩個參數(shù),返回字符串 + 參數(shù)負(fù)數(shù)表示從后面開始計(jì)數(shù)

      兩個參數(shù)也分別對應(yīng)著開始位置和結(jié)束位置,slice()中的參數(shù)可以為負(fù)值,也就是說,-1 指字符串的最后一個字符。

      var str = 'abcdefg';
      console.log(str.slice(1, 4));    //返回bcd
      console.log(str.slice(-3, -1));    //返回ef
      
    • substr(start,length) 兩個參數(shù) 返回字符串+ 第二個參數(shù)為截取的字符長度 + 參數(shù)可為負(fù)

      substr()方法可在字符串中抽取從start下標(biāo)開始的指定數(shù)目的字符,另外如果start為負(fù)數(shù),則表示從字符串尾部開始算起。

        var str = 'abcdefg';
        console.log(str.substr(1, 3))    //返回bcd
        console.log(str.substr(2))    //返回cdefg
        console.log(str.substr(-2, 4))    //返回fg,目標(biāo)長度較大的話,以實(shí)際截取的長度為準(zhǔn)
      
  4. 字符串修改

    • replace(regexp/substr,replacement) 兩個參數(shù),返回字符串 + 可正則 + 正則全局匹配不同

      replace()方法用來進(jìn)行字符串替換操作,它可以接收兩個參數(shù),前者為被替換的子字符串(可以是正則),后者為用來替換的文本。

      如果第一個參數(shù)傳入的是子字符串或是沒有進(jìn)行全局匹配的正則表達(dá)式,那么replace()方法將 只進(jìn)行一次替換(即替換最前面的),返回經(jīng)過一次替換后的結(jié)果字符串。

        var str = 'abcdeabcde';
        console.log(str.replace(/a/, 'A'));    // 輸出 Abcdeabcde 只替換了第一個字符
      

      如果第一個參數(shù)傳入的全局匹配的正則表達(dá)式,那么replace()將會對符合條件的子字符串進(jìn)行多次替換,最后返回經(jīng)過多次替換的結(jié)果字符串。

        var str = 'abcdeabcdeABCDE';
        console.log(str.replace(/a/g, 'A'));    //返回AbcdeAbcdeABCDE
        console.log(str.replace(/a/gi, '$'));    //返回$bcde$bcde$BCDE
      

    ** 注意:在替換時雖然正則匹配后得到的結(jié)果為數(shù)組 str.match(/a/gi) //["a", "a"],但是 replace的第一個參數(shù)不能用數(shù)組代替**

    • split(separator,howmany) 兩個參數(shù), + 返回?cái)?shù)組

      split()方法用于把一個字符串分割成字符串?dāng)?shù)組,第二個參數(shù)howmany表示返回?cái)?shù)組的允許最大長度(一般情況下不設(shè)置)

        var str = 'a|b|c|d|e';
        console.log(str.split('|'));    //返回["a", "b", "c", "d", "e"]
        console.log(str.split('|', 3));    //返回["a", "b", "c"]
        
        // 使用正則進(jìn)行分割
        console.log(str.split(/\d/)); //返回["a", "b", "c", "d", "e"]
      
  5. 其他

    toLowerCase()和toUpperCase() 無參數(shù),返回字符串

     var str = 'JavaScript';
     console.log(str.toLowerCase());    //返回javascript
     console.log(str.toUpperCase());    //返回JAVASCRIPT
    

字符串使用實(shí)例


  1. 字符串和數(shù)組之間的裝換

     1. 字符轉(zhuǎn)為數(shù)組
     var arr = 'language';
     arr.split('')  //["l", "a", "n", "g", "u", "a", "g", "e"]
    
     2. 數(shù)組轉(zhuǎn)為字符串
     arr = [1, 2, ,3 , 4, 5];
    
     arr.join('');   // 12345;
     arr.toString().replace(/,/g,''); //12345
    
  2. 字符串反轉(zhuǎn)

思路1: 遍歷字符串:從后想向前排 for (自己寫)

思路2:使用帶有反轉(zhuǎn)方法的 JavaScript 數(shù)據(jù)類型(因?yàn)?js 數(shù)組有反轉(zhuǎn)的方法 reverse.)

var str = 'language';

str.split('').reverse().toString().replace(/,/g,'') // egaugnal

str.split('').reverse().join() // egaugnal

參考鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,208評論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,746評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,666評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,477評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,960評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,200評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,726評論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,617評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,807評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,049評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,425評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,674評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,432評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,769評論 2 372

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