字元串方法
- 字元串切割
- slice
- strObj.slice(start[,end])
- 參數為負,将它作為length+end處理,此處length為字元串的長度。
- str.slice(-2)可以取字元串後兩位
- substring
- strObj.substring(start[,end])
- substring方法使用start和end兩者中的較小值作為子字元串的起始點。
- 如果start或end為NaN或者為負數,那麼将其替換為0。
- 兩個參數不确定是起始位置還是結束位置時使用
- substr
- strObj.substr(start[,length])
- 如果start為負,将它作為length+start處理,此處length為字元串的長度。
- 傳回一個從指定位置開始的指定長度的子字元串。
- str.substr(-2)可以取字元串後兩位
- slice
- 字元串分割(字元串轉數組)
- split
- strObj.split([separator[,limit]])
- separator字元串或 正規表達式 對象,它辨別了分隔字元串時使用的是一個還是多個字元。如果忽略該選項,傳回包含整個字元串的單一進制素數組。
- limit該值用來限制傳回數組中的元素個數。
- var str = "AA BB CC DD EE FF";
- alert(str.split(" ",3));
- 結果:
- AA,BB,CC
- split
-
子串識别
注意:如果向 startsWith() 、 endsWith() 或 includes() 方法傳入了正規表達式而不是字元串,會抛出錯誤。而對于indexOf()和lastIndexOf()這兩個方法,它們會将正規表達式轉換為字元串并搜尋它。若需要找到它們在字元串中的确切位置,則需要使用 indexOf() 和 lastIndexOf() 。
- includes (es6)
- 該方法在給定文本存在于字元串中的任意位置時會傳回 true ,否則傳回false。
- 接受兩個參數:需要搜尋的文本,以及可選的搜尋起始位置索引
- startsWith (es6)
- 該方法在給定文本出現在字元串起始處時傳回 true ,否則傳回 false
- 接受兩個參數:需要搜尋的文本,以及可選的搜尋起始位置索引
- endsWith (es6)
- 該方法在給定文本出現在字元串結尾處時傳回 true ,否則傳回 false
- 接受兩個參數:需要搜尋的文本,以及可選的搜尋起始位置索引
- indexOf
- strObj.indexOf(substr[,startIndex])
- 傳回String對象内第一次出現子字元串位置。沒有找到子字元串,則傳回-1。
- var str = "ABCDECDFG";
- str.indexOf("CD",1); // 由1位置從左向右查找 12,23...
- 結果:2
- lastIndexOf
- strObj.lastIndexOf(substr[,startindex])
- 傳回String對象中字元串最後出現的位置。沒有找到子字元串,則傳回-1。
- var str = "ABCDECDFG";
- str.lastIndexOf("CD",7); // 由7位置從右向左查找 67, 56...
- 結果:5
- search
- 參數為字元串或者正規表達式
- 傳回比對的第一個字元串的位置(就算是帶g全局标志也是傳回比對的第一個字元串的位置)
- includes (es6)
- 字元串重複
- repeat(es6)
- 接受一個參數作為字元串的重複次數,傳回一個将初始字元串重複指定次數的新字元串
-
參數如果是小數,會被取整(向下取整,等同floor)
console.log('na'.repeat(2.9)); // "nana"
-
如果repeat的參數是負數或者Infinity,會報錯
//Uncaught RangeError: Invalid count value
console.log('na'.repeat(Infinity));
//Uncaught RangeError: Invalid count value
console.log('na'.repeat(-1));
-
如果參數是0到-1之間的小數,則等同于0,這是因為會先進行取整運算。0到-1之間的小數,取整以後等于-0,repeat視同為0
console.log('na'.repeat(-0.9)); // ""
-
參數NaN等同于0
console.log('na'.repeat(NaN)); // ""
-
如果repeat的參數是字元串,則會先轉換成數字
console.log('na'.repeat('na')); // ""
console.log('na'.repeat('3')); // "nanana"
- 應用:縮進級别
- repeat(es6)
- 字元串補全
- padStart(es8)和padEnd(es8)
-
接受兩個參數,第一個參數用來指定字元串的最小長度,第二個參數是用來補全的字元串
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
-
如果省略第二個參數,預設使用空格補全長度
'x'.padStart(4) // ' x'
'x'.padEnd(4) // 'x '
-
如果原字元串的長度,等于或大于指定的最小長度,則傳回原字元串
'xxx'.padStart(2, 'ab') // 'xxx'
'xxx'.padEnd(2, 'ab') // 'xxx'
-
如果用來補全的字元串與原字元串,兩者的長度之和超過了指定的最小長度,則會截去超出位數的補全字元串
'abc'.padStart(10, '0123456789')// '0123456abc'
- 應用
-
補全指定位數
'1'.padStart(10, '0') // "0000000001"
'12'.padStart(10, '0') // "0000000012"
'123456'.padStart(10, '0') // "0000123456"
-
提示字元串格式
'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"
-
-
- padStart(es8)和padEnd(es8)