JavaScript字符串常見方法

Javascript的字符串是不可變的,String類的全部方法不會改變某個字符串的原始值,而是返回一個新的字符串。es6

var s = 'hello, world';

屬性

s.length // 12

原型方法

charAt

string.charAt(index)數組

取得字符串指定索引所在的字符
若是索引再也不0~s.length-1之間,則返回一個空串編碼

s.charAt(0) // h

在es5中字符串能夠當成只讀數組,除了使用charAt方法,也能夠使用方括號的方法訪問字符串的指定索引所在的字符。es5

s[0] // h

charCodeAt

string.charCodeAt(index)prototype

取得字符串指定索引所在字符的Unicode編碼一個16位的整數,取值在0~65,535之間
若是索引再也不0~s.length-1之間,則返回NaNcode

s.charCodeAt(0) // 104

contact

string.contact(s1,...)索引

鏈接一個或多個字符串,至關於「+」運算符ip

s.concat('!', '!') // hello, world!!

indexOf

string.indexOf(subString);
string.indexOf(subString, start);字符串

從指定位置start處(若是沒有指定start,則從開頭開始)從前向後查找是否含有子串subString,若是有子串,則返回子串subString第一次出現時,第一個字符所在的位置,若是沒有找到子串,則返回-1.原型

s.indexOf('l') // 2
s.indexOf('l', 3) // 3

lastIndexOf

string.lastIndexOf(subString);
string.lastIndexOf(subString, start);

從指定位置start處(若是沒有指定start,則從最後開始)從後向前查找是否含有子串subString,若是有子串,則返回子串subString第一次出現時,第一個字符所在的位置,若是沒有找到子串,則返回-1.

s.lastIndexOf('l') // 10
s.lastIndexOf('l', 3) // 3

slice

string.slice(start)
string.slice(start, end)

返回從start位置開始且包含start,到end位置但不包含end之間的全部字符,若end不指定,則返回start位置且包含start,到當前字符串結尾的全部字符。
start和end能夠爲負數,若爲負數,則從尾部開始計算,即-1表示最後一個字符,-2表示倒數第二個字符,以此類推。

s.slice(10) // rld
s.slice(10, 12) // rl
s.slice(-3, -1) // rl

substring

string.substring(from)
string.substring(from, to)

返回從from位置開始且包含from,到to位置但不包含to之間的全部字符,若to不指定,則返回from位置且包含from,到當前字符串結尾的全部字符。
from, to是非負整數,若from等於to,則返回空串,若from大於to,則會交換from和to。

s.substring(10) // rld
s.substring(10, 12) // rl
s.substring(12, 10) // rl

split

string.split(delimiter)
string.split(delimiter, limit)

返回按指定分割符delimiter切分字符串建立的數組,數組最大長度爲limit,若不指定limit,則將切分整個字符串。
String.prototype.split是Array.prototype.join的反方法

'1:2:3:4:5'.split(':') // ['1','2','3','4','5']
'hello'.split('') // ['h','e','l','l','o']
'|a|b|c|'.split('|') // ['','a','b','c','']
'|a|b||c|'.split('|') // ['','a','b','',c','']
var words = sentence.split(/\s+/) // 將句子切分爲單詞

toLowerCase

將字符串中大寫字母所有轉換爲小寫字母

toUpperCase

將字符串中小寫字母所有轉換爲大寫字母

trim

去掉開頭和結尾處的空白字符

-----es6新增-----

includes

string.includes(subString)
string.includes(subString, start)

返回布爾值,表示原字符串中是否含有指定的子字符串,第二個可選參數表示開始搜索的位置

s.includes('wor') // true
s.includes('wor', 9) // false

startsWith

string.startsWith(subString)
string.startsWith(subString, start)

返回布爾值,表示原字符串中是否以指定的子字符串開頭,第二個可選參數表示開始搜索的位置

s.startsWith('hello') // true
s.startsWith('hello', 2) // false

endsWith

見startsWith, 表示原字符串中是否以指定的子字符串結尾

repeat

string.repeat(n)

將字符串重複n次

s.repeat(2) // hello, worldhello, world

padStart

string.padStart(maxLength)
string.padStart(maxLength, str)

ES2017 引入了字符串補全長度的功能。若是某個字符串不夠指定長度,會在頭部或尾部補全。padStart()用於頭部補全,padEnd()用於尾部補全。
第一個參數是字符串補全生效的最大長度,第二個參數是用來補全的字符串,若省略,則使用空格補全長度。若是原字符串的長度,等於或大於最大長度,則字符串補全不生效,返回原字符串。

'1'.padStart(5, '0') // 00001

padEnd

見padStart

trimStart

消除字符串頭部的空格

trimEnd

消除字符串尾部的空格

靜態方法

fromCharCode

String.fromCharCode(108, 111, 118, 101) // love

借用數組方法

借用數組的非變動方法

Array.prototype.filter.call(s, (item)=> item === 'l').join('') // lll

轉化

經過調用字符串的split方法和數組的join方法,能夠借用數組的任何方法

// 反轉字符串
'123'.split('').reverse().join('') // 321
相關文章
相關標籤/搜索