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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。