头部背景图片
小畅的学习笔记 |
小畅的学习笔记 |

js字符串操作

ES5

String.fromCharCode()

该方法的参数是一系列Unicode码点,返回对应的字符串

charAt()

该方法返回指定位置的字符,参数是从0开始编号的位置

str.charAt(index)  

index 为必须参数,类型为number(0到str.length-1之间,否则该方法返回 空串)另外:str.charAt()即不带参数和str.charAt(NaN)均返回字符串的第一个字符

charCodeAt()

方法返回给定位置字符的Unicode码点(十进制表示),相当于String.fromCharCode()的逆操作

str.charCodeAt(index)  

index 为必须参数,类型为number(0到str.length-1之间,否则该方法返回 NaN)

concat()

方法用于连接两个字符串,返回一个新字符串,不改变原字符串

var a = "hello",b = "kitty",c = "!";a.concat(b,c) // 功能和 “+” 拼接没啥两样  

slice()

方法用于从原字符串取出子字符串并返回,不改变原字符串。它的第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置(不含该位置)

str.slice(startIndex,endIndex)  返回值包含startIndex不包含endIndex忽略endIndex则返回包括startIndex到原字符串结尾的字符串另外参数还有负数反向用法

substring()

方法用于从原字符串取出子字符串并返回,不改变原字符串。它与slice作用相同,但有一些奇怪的规则,因此不建议使用这个方法,优先使用slice。此方法的第一个参数表示子字符串的开始位置,第二个位置表示结束位置。

str.substring(startIndex,endIndex)  忽略endIndex则返回从startIndex到字符串尾字符

substr()

方法用于从原字符串取出子字符串并返回,不改变原字符串。此方法的第一个参数是子字符串的开始位置,第二个参数是子字符串的长度。

str.substr(startIndex,length)  忽略length则返回从startIndex到字符串尾字符

indexOf(),lastIndexOf()

这两个方法用于确定一个字符串在另一个字符串中的位置,都返回一个整数,表示匹配开始的位置。如果返回-1,就表示不匹配。两者的区别在于,indexOf从字符串头部开始匹配,lastIndexOf从尾部开始匹配。

str.indexOf(searchStr,startIndex)  searchStr必选,表示需要匹配的字符串值;startIndex可选,取值范围0到str.length-1,省略则默认首字符开始检索。

trim()

方法用于去除字符串两端的空格,返回一个新字符串,不改变原字符串。

toLowerCase(),toUpperCase()

它们都返回一个新字符串,不改变原字符串。
toLowerCase方法用于将一个字符串全部转为小写,
toUpperCase则是全部转为大写。

localeCompare()

方法用于比较两个字符串。它返回一个整数,如果小于0,表示第一个字符串小于第二个字符串;如果等于0,表示两者相等;如果大于0,表示第一个字符串大于第二个字符串。

match()

方法用于确定原字符串是否匹配某个子字符串,返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配,则返回null。

方法的用法等同于match,但是返回值为匹配的第一个位置。如果没有找到匹配,则返回-1。

str.search(regexp/substr)  返回值:str中第一个与正则或字符串相匹配的子串的起始位置。  说明 search() 方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。

replace()

方法用于替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰符的正则表达式)。

split()

方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组。

str.split()  

ES6

字符的 Unicode 表示法

codePointAt()

JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode 码点大于0xFFFF的字符),JavaScript 会认为它们是两个字符。

String.fromCodePoint()

ES5 提供String.fromCharCode方法,用于从码点返回对应字符,但是这个方法不能识别 32 位的 UTF-16 字符(Unicode 编号大于0xFFFF)。

字符串的遍历器接口

ES6 为字符串添加了遍历器接口(Iterator),使得字符串可以被for…of循环遍历。

at()

ES5 对字符串对象提供charAt方法,返回字符串给定位置的字符。该方法不能识别码点大于0xFFFF的字符。

normalize()

许多欧洲语言有语调符号和重音符号。为了表示它们,Unicode 提供了两种方法。 一种是直接提供带重音符号的字符,比如Ǒ(\u01D1)。
另一种是提供合成符号(combining character),即原字符与重音符号的合成,两个字符合成一个字符,比如O(\u004F)和ˇ(\u030C)合成Ǒ(\u004F\u030C)。

includes(), startsWith(), endsWith()

传统上,JavaScript 只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6 又提供了三种新方法。

includes():返回布尔值,表示是否找到了参数字符串。

startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。

endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部。

repeat()

方法返回一个新字符串,表示将原字符串重复n次。

padStart(),padEnd()

ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。

模板字符串

模板编译

标签模板

模板字符串的功能,不仅仅是上面这些。它可以紧跟在一个函数名后面,该函数将被调用来处理这个模板字符串。这被称为“标签模板”功能(tagged template)。

String.raw()方法

往往用来充当模板字符串的处理函数,返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,对应于替换变量后的模板字符串。

模板字符串的限制

前面提到标签模板里面,可以内嵌其他语言。但是,模板字符串默认会将字符串转义,导致无法嵌入其他语言。

Lililich's Blog