Javascript的字符串是不可变的,String类的所有方法不会改变某个字符串的原始值,而是返回一个新的字符串。

var s = 'hello, world';

属性

s.length // 12

原型方法

charAt

string.charAt(index)

取得字符串指定索引所在的字符
如果索引不再0~s.length-1之间,则返回一个空串

s.charAt(0) // h

在es5中字符串可以当成只读数组,除了使用charAt方法,也可以使用方括号的方法访问字符串的指定索引所在的字符。

s[0] // h

charCodeAt

string.charCodeAt(index)

取得字符串指定索引所在字符的Unicode编码一个16位的整数,取值在0~65,535之间
如果索引不再0~s.length-1之间,则返回NaN

s.charCodeAt(0) // 104

contact

string.contact(s1,...)

连接一个或多个字符串,相当于“+”运算符

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

Cris
42 声望1 粉丝