字符串的概念
- 由0个或多个Unicode字符组成
- 用成对的单引号或者双引号表示
- 字符字面量:
换行(\n)、回车(\r)、tab(\t)、空格(\b)、进纸(\f)、\(\)、’(’)、"(")、16进制(\x)、Unicode字符(\u) - 创建后不能修改,只能先删除,在创建新的
- \u{xxxx},4个字节的字符
- 字符串遍历器接口:可以使用for…of,可以识别大于0xFFFF的码点
字符串的方法
- toString():返回相应值的字符串表现
Boolean、Number、String、Object都有该方法
Null、Undefined没有该方法 - String():
Boolean、Number、String、Object与toString()一样,返回相应值的字符串表现
Null、Undefined分别返回null、undefined - valueOf()、toString()、toLocalString():
返回对象所表示的基本类型的字符串值 - length:
返回字符串中包含对少个字符(非ASCII的双字节字符,长度个数也算1) - str[]、charAt()、charCodeAt()、String.fromCharCode()、codePointAt()、String.fromCodePoint():位置->字符,位置->字符编码,字符编码->字符串
- str[位置序号]:返回字符串中特定位置的字符,位置序号从0开始
- charAt(位置序号):返回字符串中特定位置的字符,位置序号从0开始
- charCodeAt(位置序号):返回字符串中特定位置的字符编码,位置序号从0开始
- String.fromCharCode(字符串编码1,字符串编码n):String.fromCharCode(),构造函数方法,接收一个或多个字符串编码,然后将他们转换成一个字符串
- at(位置序号):同charAt(),区别在于可以识别超过\uFFFF范围的4个字节字符
- codePointAt(位置序号):codePointAt(i),i = 0为整个字符的十进制码点,i = 1为4字节中的前两个字节的十进制码点,i = 2为4字节中的后两个字节的十进制码点
- String.fromCodePoint(字符串编码1,字符串编码n):
- concat(字符串1,字符串2,字符串n):
将一个或多个字符串拼接起来(+),返回拼接后的新字符串,不改变原字符串 - slice()、substring()、sbustr():
返回截取后的字符串,不改变原字符串;第二个参数不传时截取到结束位置
slice(start,end-1):负数参数都加字符串的长度
substring(start,end-1):负数参数都变为0,两个参数大小会调换(小的在前)
sbustr(start,length):第一个负数加长度,第二个负数变为0 - indexOf()、lastIndexOf():字符->位置
查找指定字符的位置,没找到返回-1;返回查找到的位置,不改变原字符串;字符的位置序号一直都是从前开始排序的
indexOf(查找的字符,开始查找的位置):从前向后查找
lastIndexOf(查找的字符,开始查找的位置):从后向前查找 - trim():
返回删除前后所有空格的新字符串,不改变原字符串 - 大小写转换
toUpperCase():
toLowerCase():
toLocalUpperCase():
toLocalLowerCase(): - 模式匹配方法:match()、search()、replace()、split()
match(正则表达式/RegExp对象):同RegExp.exec(str),返回匹配项的数组[与整个模式匹配的字符串,与每个捕获组匹配的字符串]
search(正则表达式/RegExp对象):返回字符串中第一个匹配项的索引,没有匹配到返回-1
replace(字符串/正则表达式/RegExp对象,字符串/函数):第一个参数为字符串时替换一个字字符串,为正则时加(/g)替换所有子字符串;第二个参数为函数时有三个参数function(模式的匹配项,模式匹配项在字符串中的位置,原始字符串){};通过这则表达式查找字符串的每一项,然后手动return函数中操作后的字符串
split(字符串/正则表达式/RegExp对象):参数为分隔符,根据分隔符将字符串分成对个子字符串,并放在一个数组中,字符串转数组
let str = 'name-value,key1-nnn22&key2-xxx';
let reg = /-\w{1}/g;
let str1 = str.replace(reg,function(a,b,c){
console.log(a,b,c);
return a.slice(1).toUpperCase();
})
console.log(str1)
- localCompare():
比较两个字符串(调用方法的字符串,参数字符串)
a.localCompare(b):a在字母表中排在b之前,返回负数;之后返回正数,相等返回0 - includes()、startsWith()、endsWith():
- includes(要查找的字符,开始查找的位置):返回布尔值,是否包含参数字符串
- startsWith(要查找的字符,开始查找的位置):返回布尔值,是否以参数字符串开头
- endsWith(要查找的字符,开始查找的位置):返回布尔值,是否以参数字符串结尾
- repeat(重复次数):
将原字符串重复n次,返回新的字符串 - padStart()、padEnd():
- padStart(字符串最小长度,用来补全的字符串):字符串补全长度
- 原字符串长度大于指定最小长度,返回原字符串
- 用来补全的字符串长度大于最小指定长度,则截取超出位数的补全字符串
- 省略第二个参数,则用空格来当补全字符串
- 用途:
- 数值补全指定位数
‘30’.padStart(5,‘0’) // 00030
- 提示字符串格式
‘08-18’.padStart(‘10’,‘YYYY-MM-DD’) // YYYY-08-18
- 模板字符串
- `hello ${name},how are you?` 用于字符串拼接
- {}中可以为:字符串、变量、表达式、函数调用、对象属性