- 用单引号/双引号包裹
- 以字符数组的形式保存,字符串"ab"在底层是以 [“a”, “b”] 的形式保存。
模板字符串 ``
ES6 新增语法
- 用反引号包裹
- 变量、表达式、函数写在
${}
中
转义字符
字符名称 | 转义写法 | 功能 / 范例 |
单引号 |
| I don’t know |
双引号 |
| “Hello”, he said |
反斜杠 |
| 1\2 |
回车符 |
| 将当前位置移到本行开头 |
换行符 |
| 将当前位置移到下一行开头 |
换页符 |
| 将当前位置移到下一页开头 |
水平制表符 |
| 按下键盘TAB键效果 |
垂直制表符 |
| 让 |
退格符 |
| 将当前位置移到前一列 |
Unicode 标识符 |
| \u 后面的字符将会被视为Unicode码 |
常用 API
全无副作用 : 都不会改变原字符串
API名称 | 功能 | 参数 | 返回值 | 副作用 |
trim | 去除字符串前后的空字符 | 无 | 新字符串 | 无 |
replace | 替换字符串指定内容 | 匹配规则,替换的字符串 | 新字符串 | 无 |
concat | 字符串拼接 | 拼接的字符串 | 新字符串 | 无 |
repeat | 重复字符串 | 重复次数 | 新字符串 | 无 |
toUpperCase | 字符串大写 | 无 | 新字符串 | 无 |
toLowerCase | 字符串小写 | 无 | 新字符串 | 无 |
charAt | 获取指定位置的字符 功能同 [ ] | 下标 | 指定位置的字符 | 无 |
includes | 是否包含指定字符串 | 目标字符串 | true/false | 无 |
indexOf | 获取指定字符串下标 | 目标字符串 | 下标/-1 | 无 |
lastIndexOf | 获取指定字符串下标 从后向前搜索 | 目标字符串 | 下标/-1 | 无 |
startsWith | 是否以指定字符串开头 | 目标字符串 | true/false | 无 |
endsWith | 是否以指定字符串结尾 | 目标字符串 | true/false | 无 |
substring | 字符串截取 | 起始下标,终点下标 | 截取后的字符串 | 无 |
slice | 字符串截取 与 substring 的区别见下文 | 起始下标,终点下标 | 截取后的字符串 | 无 |
split | 字符串分割 | 分割符,最大长度 | 分割后的数组 | 无 |
常用字符串操作【详解】
遍历字符串 for of
字符串替换 replace
通常配合正则表达式使用
字符串拼接(三种方式)
方式1:模板字符串
方式2:+
方式3:concat
【实战】字符串中加换行
html中是会被识别为"你好\n世界",要实现换行,还需添加样式:
字符串搜索
查询指定字符/字符串是否存在 includes
第一个参数是目标字符串
第二个参数是搜索起点的下标
获取指定字符/字符串的下标 indexOf / lastIndexOf
第一个参数是目标字符串
第二个参数是搜索起点的下标
未搜索到返回 -1
lastIndexOf 从后向前搜索
正则搜索 search()、match()
【实战】不区分大小写的搜索
目标字符串和被搜索的字符串都变为小写再搜索
【实战】获取指定字符的所有下标
字符串截取 substring / slice
- 第一个参数指定是区间的起始位置(含头)
- 第二个参数指定是区间的末端位置,而不是该区间的长度。(不含尾)
substring 和 slice 的区别
- substring 将负值视为0,传参 (1,-1) 效果为substring(1,0)
- slice 将负值与字符串的长度相加,传参 (1,-1) 效果为 slice(1,s.length-1)
字符串分割 split
- 第一个参数:字符串/正则表达式
- 第二个参数:指定返回的数组的最大长度
【实战】获取字符串的长度
获取字符串的字符数
获取字符串的存储长度
英文占一个字符位,其他字符占两个字符位
获取字符串的像素长度(显示宽度)
字符串的显示宽度和 css 的 fontSize,fontFamily有关。
计算思路:创建一个用span包裹的字符串标签,其 window.getComputedStyle的计算值 - offsetWidth 即字符串在页面中的显示宽度
若计算像素高度,原理相同,见注释部分
【实战】Unicode 编码转字符
【实战】字符串转为html
结果
【实战】使用 Lodash