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

  1. 字符串對(duì)象的屬性

  2. 字符串對(duì)象的方法

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


String對(duì)象屬性

  1. length 屬性

    用于獲取字符串長度绿鸣, 在js中每個(gè)中文漢字只表示一個(gè)字符

  2. prototype屬性

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

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

  1. 獲取類方法

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

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

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

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

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

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

        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ù),返回字符串 + 從后向前

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

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

      用于檢索字符串中指定的子字符串,或檢索與正則表達(dá)式相匹配的子字符串贯涎。它會(huì)返回第一個(gè)匹配的子字符串的起始位置听哭,如果沒有匹配的,則返回-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)檢索指定的值陆盘,或找到一個(gè)或多個(gè)正則表達(dá)式的匹配。

      如果參數(shù)中 傳入沒有進(jìn)行全局匹配的正則表達(dá)式(不帶/g) 粉捻,那么match()方法會(huì)從開始位置執(zhí)行一次匹配礁遣,如果沒有匹配到結(jié)果,則返回null肩刃。否則則會(huì)返回一個(gè)數(shù)組祟霍,該數(shù)組的第0個(gè)元素存放的是匹配文本,除此之外盈包,返回的數(shù)組還含有兩個(gè)對(duì)象屬性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呼渣。否則則會(huì)返回一個(gè)數(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) 兩個(gè)參數(shù),返回字符串 + 參數(shù)不為負(fù)數(shù)

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

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

      var str = 'abcdefg';
      console.log(str.slice(1, 4));    //返回bcd
      console.log(str.slice(-3, -1));    //返回ef
      
    • substr(start,length) 兩個(gè)參數(shù) 返回字符串+ 第二個(gè)參數(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) 兩個(gè)參數(shù)鲁僚,返回字符串 + 可正則 + 正則全局匹配不同

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

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

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

      如果第一個(gè)參數(shù)傳入的全局匹配的正則表達(dá)式声畏,那么replace()將會(huì)對(duì)符合條件的子字符串進(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
      

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

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

      split()方法用于把一個(gè)字符串分割成字符串?dāng)?shù)組,第二個(gè)參數(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)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末糠雨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子徘跪,更是在濱河造成了極大的恐慌甘邀,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垮庐,死亡現(xiàn)場離奇詭異松邪,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)哨查,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門逗抑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人寒亥,你說我怎么就攤上這事邮府。” “怎么了溉奕?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵褂傀,是天一觀的道長。 經(jīng)常有香客問我腐宋,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任胸竞,我火速辦了婚禮欺嗤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卫枝。我一直安慰自己煎饼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布校赤。 她就那樣靜靜地躺著吆玖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪马篮。 梳的紋絲不亂的頭發(fā)上沾乘,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音浑测,去河邊找鬼翅阵。 笑死,一個(gè)胖子當(dāng)著我的面吹牛迁央,可吹牛的內(nèi)容都是我干的掷匠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼岖圈,長吁一口氣:“原來是場噩夢啊……” “哼讹语!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蜂科,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤顽决,失蹤者是張志新(化名)和其女友劉穎荆陆,沒想到半個(gè)月后少梁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鲫忍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年逐抑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸠儿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡厕氨,死狀恐怖进每,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情命斧,我是刑警寧澤田晚,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站国葬,受9級(jí)特大地震影響贤徒,放射性物質(zhì)發(fā)生泄漏芹壕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一接奈、第九天 我趴在偏房一處隱蔽的房頂上張望踢涌。 院中可真熱鬧,春花似錦序宦、人聲如沸睁壁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽潘明。三九已至,卻和暖如春秕噪,著一層夾襖步出監(jiān)牢的瞬間钳降,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工巢价, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留牲阁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓壤躲,卻偏偏與公主長得像城菊,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子碉克,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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