一. 什么是字符串?
- 由一组单引号或双引号组成的字符, 就是字符串
二. 字符串的创建方式
- 字面量表示
var str = 'hello';
var str2 = "hi";
console.log(typeof(str)); // string
2.构造函数创建字符串
var str = new String('hello');
console.log(typeof(str)); // object
3.类似于强制转换创建字符串
var str = String('hello');
console.log(typeof(str)); // string
三. 字符串的恒定性
- 字符串的任何方法不会改变原字符串
var str = 'abc123';
console.log(str.substr(1, 3)); // bc1
console.log(str); // abc123
四. 字符串的length属性
- 字符串的length属性可用于下标取值
- 字符串的下标从0开始
- 字符串的length不能被修改
- 可用for或for...in遍历字符串
var str = 'how do you do ?'
console.log(str.length); // 15
str.length = 10;
console.log(str.length); // 15
五. 字符串的方法
1. str.charAt(index)
- 获取字符串中下标为index的值
- 返回该值
var str = 'abc1';
console.log(str.charAt(1)); // b
2. str.charCodeAt(index)
- 获取字符串中下标为index的值
- 返回该值的ASCII码
var str = 'abc1';
console.log(str.charCodeAt(1)); // 98
3. String.fromCharCode(ASCII码)
- 将传入的ASCII码转换为对应字符
- 是String的静态方法, 所以使用String调用
- 可以同时传入多个参数
var str = String.fromCharCode(98, 97);
console.log(str); // ba
4. str.concat(string) 和 +
- str.concat 和 +: 字符串的拼接
- str.concat: 字符串的浅拷贝
// (1)字符串的拼接
var str = 'hello';
console.log(str.concat(" world!")); // hello world!
console.log(str + " world!"); // hello world!
// (2)字符串的浅拷贝
var str = 'hello';
var str1 = ''.concat(str);
console.log(str1); // hello
5. str.indexOf(string, start)
- 字符串查找方法
- string: 要查找的字符串
- start: 查找的开始位置, 默认是0
- 省略start, 默认查找字符串第一次出现的位置
- 找到返回对应下标
- 找不到返回 -1
var str = 'abc1abcef2';
console.log(str.indexOf('ab')); // 0
console.log(str.indexOf('ab', 3)); // 4
console.log(str.indexOf('i')); // -1
6. str.lastIndexOf(string)
- 从字符串末尾开始查找字符串
- 找到返回对应下标
- 找不到返回 -1
var str = 'abc1abcef2';
console.log(str.lastIndexOf('ab')); // 4
console.log(str.lastIndexOf('i')); // -1
7. str.search(string)
- 查询字符串
- string: 字符串或正则表达式
- 找到了返回下标, 找不到返回 -1
- 返回字符串第一次出现的位置
- 支持正则
var str = 'a01abc1abcef2';
console.log(str.search('abc')); // 3
console.log(str.search('i')); // -1
console.log(str.search(/abc/gi)); // 3
8. str.math(string)
- 匹配字符串
- string: 字符串或正则表达式
- 匹配到了返回一个新数组, 否则返回 null
- 支持正则, 可以结合正则进行全局匹配
var str = 'a0abc1abcef2ABC';
console.log(str.match('abc')); // ['abc', index: 2, ...]
console.log(str.match('123')); // null
console.log(str.match(/abc/gi)); // ['abc', 'abc', 'ABC']
9. str.replace(string, reString)
- 替换字符串
- string: 字符串或正则表达式
- reString: 替换的新内容
- 默认只能替换一次
- 支持正则, 结合正则进行全局替换
var str = 'abc1abcef2';
console.log(str.replace('abc', '哈哈哈')); // 哈哈哈1abcef2
console.log(str.replace(/abc/gi, '哈哈哈')); // 哈哈哈1哈哈哈ef2
10. str.split(separator, length)
- 根据指定字符拆分成数组
- separator: 字符串或正则表达式
- [注] 如果separator是空字符串 -> '', 那么会将str中的每一个字符进行分割
- length:可以指定返回的数组的最大长度, 可以省略
- 支持正则
var str = '2022-01-11';
console.log(str.split('-')); // ['2022', '01', '11']
console.log(str.split(/-/)); // ['2022', '01', '11']
console.log(str.split('')); // ['2', '0', '2', '2', '-', '0', '1', '-', '1', '1']
console.log(str.split('-', 1)); // ['2022']
11. str.slice(start, end)
- 截取字符串
- 截取范围: [start, end)
- 若只有一个参数, 则表示从这个数截取至字符串的末尾
var str = 'abc1abcef2';
console.log(str.slice(3, 7)); // 1abc
console.log(str.slice(3)); // 1abcef2
12. str.substring(start, end)
- 截取字符串
- 截取范围: [start, end)
- 若只有一个参数, 则表示从这个数截取至字符串的末尾
- 参数会自动调整, 默认从小到大
var str = 'abc1abcef2';
console.log(str.substring(3, 6)); // 1ab
console.log(str.substring(6, 3)); // 1ab
console.log(str.substring(3)); // 1abcef2
13. str.substr(start, length)
- 字符串的截取
- start: 开始截取的下标
- length: 截取的个数
- 若不写length, 则从start位置截取至字符串末尾
var str = 'abc1abcef2';
console.log(str.substr(3, 2)); // 1a
console.log(str.substr(6)); // cef2
14. str.toLowerCase()
- 把字符串转换成小写
var str = 'ABC1ABCEF2';
console.log(str.toLowerCase()); // abc1abcef2
15. str.toUpperCase()
- 把字符串转换成大写
var str = 'abc1abcef2';
console.log(str.toUpperCase()); // ABC1ABCEF2
16. str.trim()
- 去掉字符串前后空格
var str = ' 哈哈哈123 ';
console.log(str); // 哈哈哈123
console.log(str.trim()); //哈哈哈123
六. Math的方法
1. Math.round() 四舍五入
console.log(Math.round(3.5)); // 4
console.log(Math.round(3.4)); // 3
2. Math.random() 随机数
- 返回 [0, 1) 之间的随机数
console.log(Math.random()); // [0, 1)
console.log(Math.ceil(Math.random() * 10)); // [1, 10]的随机数
3. Math.max() 返回较大的数
console.log(Math.max(1, 2)); // 2
console.log(Math.max(1, 2, 3)); // 3
4. Math.min() 返回较小的数
console.log(Math.min(1, 2)); // 1
console.log(Math.min(-2, 3, 4)); // -2
5. Math.abs() 绝对值
console.log(Math.abs(1)); // 1
console.log(Math.abs(-1)); // 1
6. Math.ceil() 向上取整
console.log(Math.ceil(1.1)); // 2
console.log(Math.ceil(1.9)); // 2
7. Math.floor() 向下取整
console.log(Math.floor(1.1)); // 1
console.log(Math.floor(1.9)); // 1
8. **与Math.pow() 求次方
console.log(Math.pow(2, 3)); // 8
console.log(2 ** 3); // 8
9. Math.sqrt() 开平方
console.log(Math.sqrt(4)); // 2
console.log(Math.sqrt(9)); // 3