
<code>String</code>對象是JavaScript原生提供的三個包裝對象之一,用來生成字元串的包裝對象。
上面代碼中,變量<code>s1</code>是字元串,<code>s2</code>是對象。由于<code>s2</code>是對象,是以有自己的方法,<code>valueOf</code>方法傳回的就是它所包裝的那個字元串。
實際上,字元串的包裝對象是一個類似數組的對象(即很像數組,但是實質上不是數組)。
除了用作構造函數,<code>String</code>對象還可以當作工具方法使用,将任意類型的值轉為字元串。
上面代碼将布爾值<code>ture</code>和數值<code>5</code>,分别轉換為字元串。
String對象提供的靜态方法(即定義在對象本身,而不是定義在對象執行個體的方法),主要是<code>fromCharCode()</code>。該方法的參數是一系列Unicode碼點,傳回對應的字元串。
上面代碼中,<code>fromCharCode</code>方法接受5個Unicode碼點作為參數,傳回它們組成的字元串。
注意,該方法不支援Unicode碼點大于<code>0xFFFF</code>的字元,即傳入的參數不能大于<code>0xFFFF</code>。
上面代碼傳回字元的編号是<code>0x0BB7</code>,而不是<code>0x20BB7</code>。它的根本原因在于,碼點大于<code>0xFFFF</code>的字元占用四個位元組,而JavaScript隻支援兩個位元組的字元。這種情況下,必須把<code>0x20BB7</code>拆成兩個字元表示。
上面代碼中,<code>0x20BB7</code>拆成兩個字元<code>0xD842</code>和<code>0xDFB7</code>(即兩個兩位元組字元,合成一個四位元組字元),就能得到正确的結果。碼點大于<code>0xFFFF</code>的字元的四位元組表示法,由UTF-16編碼方法決定。
<code>length</code>屬性傳回字元串的長度。
<code>charAt</code>方法傳回指定位置的字元,參數是從<code>0</code>開始編号的位置。
這個方法完全可以用數組下标替代。
如果參數為負數,或大于等于字元串的長度,<code>charAt</code>傳回空字元串。
<code>charCodeAt</code>方法傳回給定位置字元的Unicode碼點(十進制表示),相當于<code>String.fromCharCode()</code>的逆操作。
上面代碼中,<code>abc</code>的<code>1</code>号位置的字元是<code>b</code>,它的Unicode碼點是<code>98</code>。
如果沒有任何參數,<code>charCodeAt</code>傳回首字元的Unicode碼點。
上面代碼中,首字元<code>a</code>的Unicode編号是97。
需要注意的是,<code>charCodeAt</code>方法傳回的Unicode碼點不大于65536(0xFFFF),也就是說,隻傳回兩個位元組的字元的碼點。如果遇到Unicode碼點大于65536的字元,必需連續使用兩次<code>charCodeAt</code>,不僅讀入<code>charCodeAt(i)</code>,還要讀入<code>charCodeAt(i+1)</code>,将兩個16位元組放在一起,才能得到準确的字元。
如果參數為負數,或大于等于字元串的長度,<code>charCodeAt</code>傳回<code>NaN</code>。
<code>concat</code>方法用于連接配接兩個字元串,傳回一個新字元串,不改變原字元串。
該方法可以接受多個參數。
如果參數不是字元串,<code>concat</code>方法會将其先轉為字元串,然後再連接配接。
上面代碼中,<code>concat</code>方法将參數先轉成字元串再連接配接,是以傳回的是一個三個字元的字元串。作為對比,加号運算符在兩個運算數都是數值時,不會轉換類型,是以傳回的是一個兩個字元的字元串。
<code>slice</code>方法用于從原字元串取出子字元串并傳回,不改變原字元串。
它的第一個參數是子字元串的開始位置,第二個參數是子字元串的結束位置(不含該位置)。
如果省略第二個參數,則表示子字元串一直到原字元串結束。
如果參數是負值,表示從結尾開始倒數計算的位置,即該負值加上字元串長度。
如果第一個參數大于第二個參數,<code>slice</code>方法傳回一個空字元串。
<code>substring</code>方法用于從原字元串取出子字元串并傳回,不改變原字元串。它與<code>slice</code>作用相同,但有一些奇怪的規則,是以不建議使用這個方法,優先使用<code>slice</code>。
<code>substring</code>方法的第一個參數表示子字元串的開始位置,第二個位置表示結束位置。
如果省略第二個參數,則表示子字元串一直到原字元串的結束。
如果第二個參數大于第一個參數,<code>substring</code>方法會自動更換兩個參數的位置。
上面代碼中,調換<code>substring</code>方法的兩個參數,都得到同樣的結果。
如果參數是負數,<code>substring</code>方法會自動将負數轉為0。
上面代碼的第二個例子,參數<code>-3</code>會自動變成0,等同于<code>'JavaScript'.substring(4, 0)</code>。由于第二個參數小于第一個參數,會自動互換位置,是以傳回<code>Java</code>。
<code>substr</code>方法用于從原字元串取出子字元串并傳回,不改變原字元串。
<code>substr</code>方法的第一個參數是子字元串的開始位置,第二個參數是子字元串的長度。
如果第一個參數是負數,表示倒數計算的字元位置。如果第二個參數是負數,将被自動轉為0,是以會傳回空字元串。
上面代碼的第二個例子,由于參數<code>-1</code>自動轉為<code>0</code>,表示子字元串長度為0,是以傳回空字元串。
這兩個方法用于确定一個字元串在另一個字元串中的位置,都傳回一個整數,表示比對開始的位置。如果傳回<code>-1</code>,就表示不比對。兩者的差別在于,<code>indexOf</code>從字元串頭部開始比對,<code>lastIndexOf</code>從尾部開始比對。
它們還可以接受第二個參數,對于<code>indexOf</code>方法,第二個參數表示從該位置開始向後比對;對于<code>lastIndexOf</code>,第二個參數表示從該位置起向前比對。
<code>trim</code>方法用于去除字元串兩端的空格,傳回一個新字元串,不改變原字元串。
該方法去除的不僅是空格,還包括制表符(<code>\t</code>、<code>\v</code>)、換行符(<code>\n</code>)和回車符(<code>\r</code>)。
<code>toLowerCase</code>方法用于将一個字元串全部轉為小寫,<code>toUpperCase</code>則是全部轉為大寫。它們都傳回一個新字元串,不改變原字元串。
這個方法也可以将布爾值或數組轉為大寫字元串,但是需要通過<code>call</code>方法使用。
<code>localeCompare</code>方法用于比較兩個字元串。它傳回一個整數,如果小于0,表示第一個字元串小于第二個字元串;如果等于0,表示兩者相等;如果大于0,表示第一個字元串大于第二個字元串。
該方法的最大特點,就是會考慮自然語言的順序。舉例來說,正常情況下,大寫的英文字母小于小寫字母。
上面代碼中,字母<code>B</code>小于字母<code>a</code>。這是因為JavaScript采用的是Unicode碼點比較,<code>B</code>的碼點是66,而<code>a</code>的碼點是97。
但是,<code>localeCompare</code>方法會考慮自然語言的排序情況,将<code>B</code>排在<code>a</code>的前面。
上面代碼中,<code>localeCompare</code>方法傳回整數1(也有可能傳回其他正整數),表示<code>B</code>較大。
<code>match</code>方法用于确定原字元串是否比對某個子字元串,傳回一個數組,成員為比對的第一個字元串。如果沒有找到比對,則傳回<code>null</code>。
傳回數組還有<code>index</code>屬性和<code>input</code>屬性,分别表示比對字元串開始的位置和原始字元串。
<code>match</code>方法還可以使用正規表達式作為參數,詳見《正規表達式》一節。
<code>search</code>方法的用法等同于<code>match</code>,但是傳回值為比對的第一個位置。如果沒有找到比對,則傳回<code>-1</code>。
<code>search</code>方法還可以使用正規表達式作為參數,詳見《正規表達式》一節。
<code>replace</code>方法用于替換比對的子字元串,一般情況下隻替換第一個比對(除非使用帶有<code>g</code>修飾符的正規表達式)。
<code>replace</code>方法還可以使用正規表達式作為參數,詳見《正規表達式》一節。
<code>split</code>方法按照給定規則分割字元串,傳回一個由分割出來的子字元串組成的數組。
如果分割規則為空字元串,則傳回數組的成員是原字元串的每一個字元。
如果省略參數,則傳回數組的唯一成員就是原字元串。
如果滿足分割規則的兩個部分緊鄰着(即中間沒有其他字元),則傳回數組之中會有一個空字元串。
如果滿足分割規則的部分處于字元串的開頭或結尾(即它的前面或後面沒有其他字元),則傳回數組的第一個或最後一個成員是一個空字元串。
<code>split</code>方法還可以接受第二個參數,限定傳回數組的最大成員數。
上面代碼中,<code>split</code>方法的第二個參數,決定了傳回數組的成員數。
<code>split</code>方法還可以使用正規表達式作為參數。
本文轉自yonghu86部落格園部落格,原文連結:http://www.cnblogs.com/huyong/p/6247312.html,如需轉載請自行聯系原作者