资源
- 推荐zeal:离线文档查看器 https://zealdocs.org/
- 推荐w3c:线上文档 https://www.w3school.com.cn/
- 本笔记参考视频,李立超:BV1mG411h7aD p126-p133
- 我的笔记:https://gitee.com/plusmile/stackedit-app-data.git
字符串的常用方法
- 字符串本质是字符数组,很多方法与数组相似,但是是不可变的,所以方法都是不可变方法。
- lenth,获取长度,只读;也可以通过[索引]获取指定位置的字符
- at()/charAt(),通过索引获取指定位置的字符,at()可以传负数
- concat(str1,str2),拼串,和+号类似
- includes(str1,[查询起始位置]),检查是否包含某个内容,有就返回true
- indexOf(str1)/lastIndexOf(str1),查询是否包含某个内容,返回索引。同样有可选的起始查询位置参数。
- endsWith(str)/startWith(str),检查是否以某个内容结束/开始
- padStart(lenth,填充内容)/padStart(lenth,填充内容),在开始或末尾填充内容到指定长度,填充内容默认空格。
- repeat(8),将N个相同的字符串拼在一起
- replace(‘原内容’,‘替换内容’)/replaceAll(‘原内容’,‘替换内容’),用新字符串替换指定内容,前者替换一个,后者替换全部。
- slice(起始位置索引,结束位置索引)/substring(起始位置索引,结束位置索引),截取字符串,包括起始位置,不包括结束位置,区别是后者的起始和结束位置可以互换。
- substr(起始位置,截取长度),截取字符串
- split(‘符号’),将字符串按传的符号拆成数组,更正则配合后功能更强大。
- toLowerCase()/toUpperCase(),将字符串转换为小写/大写
- trim()/trimStart()/trimEnd(),去除字符串的前后空格/前空格/后空格
正则表达式
- 定义一个规则,根据规则,检查是否字符串符合规则,或者将符合规则的内容提取出来。
- 正则表达式在JS中为一个对象,所以需要先创建对象。1. 使用构造函数创建,new RegExp(模式表达式,匹配模式),构造函数中接收两个字符串参数,当动态生成正则时使用构造函数,模式表达式中的转移字符需要两个斜杠\。2.使用字面量创建,let reg=/正则/匹配模式。简写:/正则/
- reg.test(str),检查字符串是否符合reg规则
- 编写规则:
- 大部分字符都可以直接写。
|
表示或。[]
表示字符集,有任意一个即可,[a-z]表示任意小写字母,[a-zA-Z]任意字母。[^xxx]
表示除了,比如[^a-z]
表示除了小写字母。.
表示除了换行\n\r
外的任意字符,需要表达单纯的.
需要使用转移字符\
- 其他的字符集,\w 任意单词字符(大小写字母、0-9和下划线_) ;\W 除了单词字符 ;\d 任意数字;\D 除了数字;\s 单个空白字符,比如空格;\S 除了单个空白字符;\b 单词边界;\B 除了单此词边界。
^
表是字符串开头,^a
表示以a开头。$
表是字符串结尾,a$
表示以a结尾。^a$
表示决定匹配a- 上面的都是匹配一个字符,在这些后加上
{m}
,表示正好m个,比如^a{3}
,三个a开头;{m,}
,表示至少m个;{m,n}
,表示m~n个 - {}只对前一个字符起作用,可以加()表分组,这样可以对组起作用,
(ab){3}
,是否包含ababab - +表示一个以上,相当于{1,}
- *表示任意数量,没有也行
- ?表示0-1次,相当于{0,1}
- 匹配模式,1.
i
表示忽略大小写。2.g
表示全局匹配 - reg.exec(str),提取字符串中符合reg规则的内容,只匹配第一个,使用全局匹配模式后,每次调用,向后匹配一个。可以在正则中加小括号来分组,对结果使用索引来取出分组。
字符串的正则方法
- str.split(reg),根据正则来对一个字符串进行拆分
- str.search(reg),搜索符合正则表达式的内容第一次在字符串中出现的位置
- str.replace(reg,‘替换内容’),根据正则替换字符串中的指定内容,正则不加g则只匹配一次。
- str.match(reg),根据正则匹配字符串中的符合内容,返回字符串数组,缺点没有分组信息。正则不加g则只匹配一次。
- str.matchAll(reg),根据正则匹配字符串中的所有符合内容,返回迭代器,有分组信息,正则必须加g
垃圾回收
- 一个对象没有任何变量对其引用,则该对象为垃圾
- JS自动回收垃圾,对于不用的对象,可以手动赋值null,让JS去回收
- 这个垃圾回收,应该有更深的东西,之后看看。