本編主要介紹String 字符串對象。javascript
1. 介紹:闡述 String 對象的說明以及定義方式。html
2. 實例屬性:介紹 String 對象的實例屬性: length。java
3. 實例方法:介紹 String 對象的實例方法:charAt、charCodeAt、concat、indexOf等方法。web
String 對象,對字符串進行操做,如:截取一段子串、查找字符串/字符、轉換大小寫等等。正則表達式
參數:數組
①value {String} :字符串app
返回值:函數
{String對象} 返回一個內容爲Value的String對象編碼
示例:spa
var demoStr = new String('abc'); console.log(typeof demoStr); // => object console.log(demoStr); // => abc
示例:
var demoStr = 'abc'; console.log(typeof demoStr); // string console.log(demoStr); // => abc
var s = 'abc'; console.log(s.length); // => 3 console.log('新年快樂'.length); // => 4 :一箇中文字符也計算爲1個數量 console.log(''.length); // => 0 :空字符串返回0
注意:字符串的實例方法不會改變字符串的自己,只返回操做後的結果。
參數:
①index {int} :位置索引,從0開始計算
返回值:
{string} 返回一個字符串中指定位置的字符;若傳入個不存在的位置數值,返回一個空字符串
示例:
var s = 'abc'; console.log(s.charAt(1)); // => b :返回位置爲1的字符 console.log(s); // => 不影響原來的數組 console.log(s.charAt(5)); // => '' :獲取一個不存在位置的字符,返回一個長度爲0的空字符串
參數:
①index {int} :位置索引,從0開始計算
返回值:
{number} 返回一個字符串中指定位置字符的Unicode編碼;若傳入個不存在的位置數值,返回NaN
示例:
var s = 'abc'; console.log(s.charCodeAt(0)); // => 98 :字符b的Unicode編碼 console.log(s.charCodeAt(5)); // => NaN :獲取一個不存在位置的字符,返回NaN
參數:
①value1,value2 ... valueN {string} :一個或多個字符串
返回值:
{string} 返回鏈接後的字符串
示例:
var s = 'abc'; console.log(s.concat('d')); // => abcd console.log(s); // => abc :不影響原先的字符串 console.log(s.concat('d', 'e')); // => abcde
參數:
①value {string} :查找的字符串
②startPosition {int} 可選 :開始查找的起始位置,默認從位置0開始查找
返回值:
{int} 返回找到的位置(從0開始計數)。若未找到,返回-1
示例:
var s = 'abc'; console.log(s.indexOf('b')); // => 1 console.log(s.indexOf('d')); // => -1 :未找到 console.log(s.indexOf('b', 2)); // => -1 :從位置2(第3個字符處)開始查找
參數:
①value {string} :查找的字符串
②startPosition {int} 可選 :開始查找的起始位置,默認從最後開始查找
返回值:
{int} 返回找到的位置(從0開始計數)。若未找到,返回-1
示例:
var s = 'abcabc'; console.log(s.lastIndexOf('a')); // => 3 :從後往前查找 console.log(s.lastIndexOf('d')); // => -1 :未找到返回-1 console.log(s.lastIndexOf('a', 2)); // => 0 :從位置2(第3個字符處)開始往前查找
參數:
①value {string} :需比較的字符串
返回值:
0 :實例比參數大
1 :實例與參數相等
-1 :實例比參數小
示例:
var s='abc'; console.log(s.localeCompare('ab')); // => 1 :實例比參數大 console.log(s.localeCompare('abc')); // => 0 :實例與參數相等 console.log(s.localeCompare('abd')); // => -1 :實例比參數小
參數:
①regexp {regexp} :正則表達式,eg:/\d+/
返回值:
根據正則表達式是否帶屬性'g',返回不一樣的結果;若沒匹配,就返回 {null}:
①正則表達式不帶屬性'g',執行一次匹配,返回{單個匹配}結果對象,對象包含如下屬性:
數組序號:表示匹配結果,0爲匹配文本,1爲從作到右第1個圓括號匹配結果,2爲第二個圓括號,依此類推
index屬性:表示匹配文本在匹配源的開始位置
input屬性:表示匹配源
②正則表達式帶屬性'g',執行全局匹配,找到字符串全部匹配對象,返回一個{字符串數組}:數組元素包含string中的每個匹配對象,不包含正則表達式括號內的字串,也不提供index和input屬性。
示例:
// 1.單個匹配 var s = 'a1b2c3d4'; var mc = s.match(/\d+/); // => 獲取第一個正則匹配的結果 if (mc != null) { console.log(mc.index); // => 1 :匹配結果在匹配源的起始位置 console.log(mc.input) // => a1b2c3d4 :匹配源 console.log(mc[0]); // => 1 :獲取匹配到的結果 } // 2.全局匹配 var mcArray = s.match(/\d+/g); // => 獲取所有正則匹配的數字 if (mcArray != null) { for (var i = 0,len=mcArray.length; i < len; i++) { var mc=mcArray[i]; console.log(mc); // => 1,2,3,4 :獲取匹配到的結果 } } // 2.帶括號的匹配 s = 'a1b2c3d4'; mc = s.match(/[a-z]([1-9])/); // => 獲取第一個正則匹配的結果 if (mc != null) { console.log(mc.index); // => 0 :匹配結果在匹配源的起始位置 console.log(mc.input) // => a1b2c3d4 :匹配源 console.log(mc[0]); // => a1 :序號0表示匹配到的結果 console.log(mc[1]); // => 1 :序號1表示第一個括號內的子匹配結果 }
參數:
①regexp {regexp} :正則表達式。eg:/\d+/
②replaceStr {string | function} :
1)如果字符串,表示替換的字符串,匹配到字串都替換成此字符串;
字符串中的$字符有特殊的含義:
$1,$2 ... $99 :表示①參從左到右圓括號的匹配子項
$& :表示整個①參匹配的子項
$$ :美圓符號
2)如果函數,表示每一個匹配結果都調用此函數,函數的惟一參數爲匹配結果,並返回一個替換結果。
返回值:
{string} 返回一個替換後的字符串
示例:
var oldStr = 'a1b2c3d4'; // 1.正則匹配到【全部】數字,替換成:','逗號 var newStr = oldStr.replace(/\d+/g, ','); console.log(newStr); // => a,b,c,d, // 2.正則匹配到【全部】數字,替換成:匹配結果 + ','逗號 newStr = oldStr.replace(/\d+/g, '$&,'); console.log(newStr); // => a1,b2,c3,d4, // 2.正則匹配到【全部】數字,每一個匹配結果都調用函數,並返回替換後的結果 newStr = oldStr.replace(/\d+/g, function (word) { if (word % 2 == 0) { return '偶'; } return '奇'; }); console.log(newStr); // => a奇b偶c奇d偶
參數:
①regexp {regexp} :正則表達式。eg:/\d+/
返回值:
{int} 返回第一個匹配的結果的位置;若沒找到匹配結果返回-1
示例:
console.log( 'abcd'.search(/\d+/) ); // => -1 :沒有找到數字 console.log( 'abcd1234'.search(/\d+/) ); // => 4 :位置序號爲4,返回第一個數字的位置
參數:
①start {int} :子串提取的開始位置索引(包括此位置的字符)。
若數字爲負,表示從字符串尾部開始計算。如:-1表示倒數一個字符串,-2表示倒數第二個字符。
②end {int} 可選:子串提取的結束位置索引(不包括此位置的字符)。
若數字爲負,表示從字符串尾部開始計算。如:-1表示倒數一個字符串,-2表示倒數第二個字符。
若省略此參數,返回從start位置到結束的全部字符。
注意:
子串的提取順序是從左到有,若start索引位置大於end索引位置,將返回一個空字符串。
返回值:
{string} 返回從字符串start位置到end前一個位置的子串。
示例:
var s = 'abcdefg'; console.log( s.slice(1) ); // bcdefg :省略end參數,結束位置爲末尾 console.log( s.slice(1, 3) ); // bc :返回從位置序號1到位置序號2(end前一個位置)的子串 console.log( s.slice(-3) ); // efg :返回從倒數第三個開始到末尾的全部字符 console.log( s.slice(-3, -1) ); // ef :返回從倒數第三個開始到第二個(end前一個位置)的全部字符
參數:
①delimiter {regexp | string} :指定的分隔符,能夠爲正則表達式或字符串。
②arrayLength {int} 可選 :分割數組的長度。若省略,返回全部分割的子串。
注意:
若分隔符在字符串的第一個或最後一個,將添加一個空字符串到返回的數組。
返回值:
{ string[] } 返回一個由字符串組成的數組。
示例:
console.log( 'a,b,c,d,e'.split(',') ); // => ["a", "b", "c", "d", "e"] console.log( ',a,b,c,d,e,'.split(',') ); // => ["", "a", "b", "c", "d", "e", ""] :分隔符在最前或最後面,會添加一個空字符串 console.log( 'a,b,c,d,e'.split(',',3) ); // => ["a", "b", "c"] :返回前3個分割的子串 console.log( 'a1b2c3d4e'.split(/\d/) ); // => ["a", "b", "c", "d", "e"] :將數字來作爲分隔符
參數:
①start {int} :子串提取的開始位置索引(包括此位置的字符)。
若數字爲負,表示從字符串尾部開始計算。如:-1表示倒數一個字符串,-2表示倒數第二個字符。
②wordLength {int} 可選 :提取字符的長度。若省略此參數,返回從start位置到結束的全部字符。
返回值:
{string} 返回提取的字符串
示例:
ar s = 'abcdefg'; onsole.log( s.substr(0) ); // => abcdefg :省略第二個參數,返回從位置序號0開始,一直到最後的字符 onsole.log( s.substr(0, 3) ); // => abc :返回從位置序號0開始,計數3個字符 onsole.log( s.substr(2, 4) ); // => cdef :返回從位置序號2開始,計數4個字符 onsole.log( s.substr(-2, 3) ); // fg :返回從倒數第二個字符串開始,計數3個(超過字符長度,就只返回可統計的字符)
參數:
①start {int} :子串提取的開始位置索引(包括此位置的字符)。數字不能爲負數,若爲負數按0來處理
②end {int} 可選:子串提取的結束位置索引(不包括此位置的字符)。數字不能爲負數,若爲負數按0來處理
返回值:
{string} 返回從字符串start位置到end前一個位置的子串。
示例:
var s = 'abcdefg'; console.log( s.substring(0) ); // => abcdefg :省略end參數,返回從位置序號0開始,一直到最後的字符 console.log( s.substring(0, 3) ); // => abc :返回從位置序號0開始到位置序號2(②參的前一個)的字符 console.log( s.substring(2, 4) ); // => cd :返回從位置序號2開始到位置序號3(②參的前一個)的字符 console.log( s.substring(-3, 3) ); // abc :參數若爲負,就按數字0來處理,因此此參數實際返回位置序號0到位置序號3的字符