<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      js實用篇之String對象

       

      概述

      String對象是JavaScript原生提供的三個包裝對象之一,用來生成字符串的包裝對象。

      var s1 = 'abc';
      var s2 = new String('abc');
      
      typeof s1 // "string"
      typeof s2 // "object"
      
      s2.valueOf() // "abc"
      

      上面代碼中,變量s1是字符串,s2是對象。由于s2是對象,所以有自己的方法,valueOf方法返回的就是它所包裝的那個字符串。

      實際上,字符串的包裝對象是一個類似數組的對象(即很像數組,但是實質上不是數組)。

      new String("abc")
      // String {0: "a", 1: "b", 2: "c", length: 3}
      

      除了用作構造函數,String對象還可以當作工具方法使用,將任意類型的值轉為字符串。

      String(true) // "true"
      String(5) // "5"
      

      上面代碼將布爾值ture和數值5,分別轉換為字符串。

      String.fromCharCode()

      String對象提供的靜態方法(即定義在對象本身,而不是定義在對象實例的方法),主要是fromCharCode()。該方法的參數是一系列Unicode碼點,返回對應的字符串。

      String.fromCharCode(104, 101, 108, 108, 111)
      // "hello"
      

      上面代碼中,fromCharCode方法接受5個Unicode碼點作為參數,返回它們組成的字符串。

      注意,該方法不支持Unicode碼點大于0xFFFF的字符,即傳入的參數不能大于0xFFFF

      String.fromCharCode(0x20BB7)
      // "?"
      

      上面代碼返回字符的編號是0x0BB7,而不是0x20BB7。它的根本原因在于,碼點大于0xFFFF的字符占用四個字節,而JavaScript只支持兩個字節的字符。這種情況下,必須把0x20BB7拆成兩個字符表示。

      String.fromCharCode(0xD842, 0xDFB7)
      // "??"
      

      上面代碼中,0x20BB7拆成兩個字符0xD8420xDFB7(即兩個兩字節字符,合成一個四字節字符),就能得到正確的結果。碼點大于0xFFFF的字符的四字節表示法,由UTF-16編碼方法決定。

      實例對象的屬性和方法

      length屬性

      length屬性返回字符串的長度。

      'abc'.length // 3
      

      charAt()

      charAt方法返回指定位置的字符,參數是從0開始編號的位置。

      var s = new String('abc');
      
      s.charAt(1) // "b"
      s.charAt(s.length - 1) // "c"
      

      這個方法完全可以用數組下標替代。

      'abc'.charAt(1) // "b"
      'abc'[1] // "b"
      

      如果參數為負數,或大于等于字符串的長度,charAt返回空字符串。

      'abc'.charAt(-1) // ""
      'abc'.charAt(3) // ""
      

      charCodeAt()

      charCodeAt方法返回給定位置字符的Unicode碼點(十進制表示),相當于String.fromCharCode()的逆操作。

      'abc'.charCodeAt(1) // 98
      

      上面代碼中,abc1號位置的字符是b,它的Unicode碼點是98

      如果沒有任何參數,charCodeAt返回首字符的Unicode碼點。

      'abc'.charCodeAt() // 97
      

      上面代碼中,首字符a的Unicode編號是97。

      需要注意的是,charCodeAt方法返回的Unicode碼點不大于65536(0xFFFF),也就是說,只返回兩個字節的字符的碼點。如果遇到Unicode碼點大于65536的字符,必需連續使用兩次charCodeAt,不僅讀入charCodeAt(i),還要讀入charCodeAt(i+1),將兩個16字節放在一起,才能得到準確的字符。

      如果參數為負數,或大于等于字符串的長度,charCodeAt返回NaN

      concat()

      concat方法用于連接兩個字符串,返回一個新字符串,不改變原字符串。

      var s1 = 'abc';
      var s2 = 'def';
      
      s1.concat(s2) // "abcdef"
      s1 // "abc"
      

      該方法可以接受多個參數。

      'a'.concat('b', 'c') // "abc"
      

      如果參數不是字符串,concat方法會將其先轉為字符串,然后再連接。

      var one = 1;
      var two = 2;
      var three = '3';
      
      ''.concat(one, two, three) // "123"
      one + two + three // "33"
      

      上面代碼中,concat方法將參數先轉成字符串再連接,所以返回的是一個三個字符的字符串。作為對比,加號運算符在兩個運算數都是數值時,不會轉換類型,所以返回的是一個兩個字符的字符串。

      slice()

      slice方法用于從原字符串取出子字符串并返回,不改變原字符串。

      它的第一個參數是子字符串的開始位置,第二個參數是子字符串的結束位置(不含該位置)。

      'JavaScript'.slice(0, 4) // "Java"
      

      如果省略第二個參數,則表示子字符串一直到原字符串結束。

      'JavaScript'.slice(4) // "Script"
      

      如果參數是負值,表示從結尾開始倒數計算的位置,即該負值加上字符串長度。

      'JavaScript'.slice(-6) // "Script"
      'JavaScript'.slice(0, -6) // "Java"
      'JavaScript'.slice(-2, -1) // "p"
      

      如果第一個參數大于第二個參數,slice方法返回一個空字符串。

      'JavaScript'.slice(2, 1) // ""
      

      substring()

      substring方法用于從原字符串取出子字符串并返回,不改變原字符串。它與slice作用相同,但有一些奇怪的規則,因此不建議使用這個方法,優先使用slice

      substring方法的第一個參數表示子字符串的開始位置,第二個位置表示結束位置。

      'JavaScript'.substring(0, 4) // "Java"
      

      如果省略第二個參數,則表示子字符串一直到原字符串的結束。

      'JavaScript'.substring(4) // "Script"
      

      如果第二個參數大于第一個參數,substring方法會自動更換兩個參數的位置。

      'JavaScript'.substring(10, 4) // "Script"
      // 等同于
      'JavaScript'.substring(4, 10) // "Script"
      

      上面代碼中,調換substring方法的兩個參數,都得到同樣的結果。

      如果參數是負數,substring方法會自動將負數轉為0。

      'Javascript'.substring(-3) // "JavaScript"
      'JavaScript'.substring(4, -3) // "Java"
      

      上面代碼的第二個例子,參數-3會自動變成0,等同于'JavaScript'.substring(4, 0)。由于第二個參數小于第一個參數,會自動互換位置,所以返回Java

      substr()

      substr方法用于從原字符串取出子字符串并返回,不改變原字符串。

      substr方法的第一個參數是子字符串的開始位置,第二個參數是子字符串的長度。

      'JavaScript'.substr(4, 6) // "Script"
      

      如果省略第二個參數,則表示子字符串一直到原字符串的結束。

      'JavaScript'.substr(4) // "Script"
      

      如果第一個參數是負數,表示倒數計算的字符位置。如果第二個參數是負數,將被自動轉為0,因此會返回空字符串。

      'JavaScript'.substr(-6) // "Script"
      'JavaScript'.substr(4, -1) // ""
      

      上面代碼的第二個例子,由于參數-1自動轉為0,表示子字符串長度為0,所以返回空字符串。

      indexOf(),lastIndexOf()

      這兩個方法用于確定一個字符串在另一個字符串中的位置,都返回一個整數,表示匹配開始的位置。如果返回-1,就表示不匹配。兩者的區別在于,indexOf從字符串頭部開始匹配,lastIndexOf從尾部開始匹配。

      'hello world'.indexOf('o') // 4
      'JavaScript'.indexOf('script') // -1
      
      'hello world'.lastIndexOf('o') // 7
      

      它們還可以接受第二個參數,對于indexOf方法,第二個參數表示從該位置開始向后匹配;對于lastIndexOf,第二個參數表示從該位置起向前匹配。

      'hello world'.indexOf('o', 6) // 7
      'hello world'.lastIndexOf('o', 6) // 4
      

      trim()

      trim方法用于去除字符串兩端的空格,返回一個新字符串,不改變原字符串。

      '  hello world  '.trim()
      // "hello world"
      

      該方法去除的不僅是空格,還包括制表符(\t\v)、換行符(\n)和回車符(\r)。

      '\r\nabc \t'.trim() // 'abc'
      

      toLowerCase(),toUpperCase()

      toLowerCase方法用于將一個字符串全部轉為小寫,toUpperCase則是全部轉為大寫。它們都返回一個新字符串,不改變原字符串。

      'Hello World'.toLowerCase()
      // "hello world"
      
      'Hello World'.toUpperCase()
      // "HELLO WORLD"
      

      這個方法也可以將布爾值或數組轉為大寫字符串,但是需要通過call方法使用。

      String.prototype.toUpperCase.call(true)
      // 'TRUE'
      String.prototype.toUpperCase.call(['a', 'b', 'c'])
      // 'A,B,C'
      

      localeCompare()

      localeCompare方法用于比較兩個字符串。它返回一個整數,如果小于0,表示第一個字符串小于第二個字符串;如果等于0,表示兩者相等;如果大于0,表示第一個字符串大于第二個字符串。

      'apple'.localeCompare('banana')
      // -1
      
      'apple'.localeCompare('apple')
      // 0
      

      該方法的最大特點,就是會考慮自然語言的順序。舉例來說,正常情況下,大寫的英文字母小于小寫字母。

      'B' > 'a' // false
      

      上面代碼中,字母B小于字母a。這是因為JavaScript采用的是Unicode碼點比較,B的碼點是66,而a的碼點是97。

      但是,localeCompare方法會考慮自然語言的排序情況,將B排在a的前面。

      'B'.localeCompare('a') // 1
      

      上面代碼中,localeCompare方法返回整數1(也有可能返回其他正整數),表示B較大。

      match()

      match方法用于確定原字符串是否匹配某個子字符串,返回一個數組,成員為匹配的第一個字符串。如果沒有找到匹配,則返回null

      'cat, bat, sat, fat'.match('at') // ["at"]
      'cat, bat, sat, fat'.match('xt') // null
      

      返回數組還有index屬性和input屬性,分別表示匹配字符串開始的位置和原始字符串。

      var matches = 'cat, bat, sat, fat'.match('at');
      matches.index // 1
      matches.input // "cat, bat, sat, fat"
      

      match方法還可以使用正則表達式作為參數,詳見《正則表達式》一節。

      search方法的用法等同于match,但是返回值為匹配的第一個位置。如果沒有找到匹配,則返回-1

      'cat, bat, sat, fat'.search('at') // 1
      

      search方法還可以使用正則表達式作為參數,詳見《正則表達式》一節。

      replace()

      replace方法用于替換匹配的子字符串,一般情況下只替換第一個匹配(除非使用帶有g修飾符的正則表達式)。

      'aaa'.replace('a', 'b') // "baa"
      

      replace方法還可以使用正則表達式作為參數,詳見《正則表達式》一節。

      split()

      split方法按照給定規則分割字符串,返回一個由分割出來的子字符串組成的數組。

      'a|b|c'.split('|') // ["a", "b", "c"]
      

      如果分割規則為空字符串,則返回數組的成員是原字符串的每一個字符。

      'a|b|c'.split('') // ["a", "|", "b", "|", "c"]
      

      如果省略參數,則返回數組的唯一成員就是原字符串。

      'a|b|c'.split() // ["a|b|c"]
      

      如果滿足分割規則的兩個部分緊鄰著(即中間沒有其他字符),則返回數組之中會有一個空字符串。

      'a||c'.split('|') // ['a', '', 'c']
      

      如果滿足分割規則的部分處于字符串的開頭或結尾(即它的前面或后面沒有其他字符),則返回數組的第一個或最后一個成員是一個空字符串。

      '|b|c'.split('|') // ["", "b", "c"]
      'a|b|'.split('|') // ["a", "b", ""]
      

      split方法還可以接受第二個參數,限定返回數組的最大成員數。

      'a|b|c'.split('|', 0) // []
      'a|b|c'.split('|', 1) // ["a"]
      'a|b|c'.split('|', 2) // ["a", "b"]
      'a|b|c'.split('|', 3) // ["a", "b", "c"]
      'a|b|c'.split('|', 4) // ["a", "b", "c"]
      

      上面代碼中,split方法的第二個參數,決定了返回數組的成員數。

      split方法還可以使用正則表達式作為參數。

       

      posted @ 2017-01-04 09:11  .NET快速開發框架  閱讀(679)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲精品国产免费av| 国产精品永久免费成人av | 老鸭窝在钱视频| 榆树市| 亚洲av产在线精品亚洲第一站 | 最近中文字幕国产精品| 国产免费高清69式视频在线观看| 亚洲综合av男人的天堂| 亚洲精品国模一区二区| 亚洲精品久久久久国色天香| 激情在线网| 国产精品色一区二区三区| 狠狠躁夜夜躁无码中文字幕| 国产国语毛片在线看国产| 制服丝袜美腿一区二区| 沙坪坝区| 少妇xxxxx性开放| 青草99在线免费观看| 亚洲v欧美v日韩v国产v| 亚洲丰满熟女一区二区v| 久久亚洲精品情侣| 亚洲av色在线观看国产| 精品无套挺进少妇内谢| 亚洲av日韩av综合在线观看| 精品亚洲一区二区三区四区| 临夏市| 日本一区二区三区东京热| 亚洲AV永久无码嘿嘿嘿嘿| 久久亚洲2019中文字幕| 免费无码午夜理论电影| 国产稚嫩高中生呻吟激情在线视频| 亚洲中文字幕乱码一区| 黑龙江省| 亚洲男人第一无码av网站| 男人的天堂va在线无码| 亚洲 制服 丝袜 无码| 成人免费xxxxx在线观看| 久久久久高潮毛片免费全部播放 | 久久久www成人免费精品| 国产亚洲精品黑人粗大精选| 公天天吃我奶躁我的在线观看|