字符串
1.索引思维
值类型:不会改变原来的数
var arr = 100//值类型
function fn(a) {
a = 200
}
fn(arr)
console.log(arr);//100
引用类型:会改变原来的数组
// var arr = [11, 22, 33, 44]
// var arr1 = arr;//arr1引用了arr的地址
// arr1[0] = "AA"
// console.log(arr1);//['AA', 22, 33, 44]
// console.log(arr);//['AA', 22, 33, 44]
function fn1(a) {
// a = a.slice(0) 拷贝一个新的,而且地址与原来的arr地址不同,进行修改,原数组arr不会发送改变
a[0] = "BB"
}
fn1(arr);
console.log(arr);//['BB', 22, 33, 44];出入的参数属于什么样的
// 类型很重要
2.字符串的概念
是一组单引号或者双引号组成的字符,它是一个"值类型"
3.创建字符串的方式
1.字面量创建
var str="你好啊"
//定义了一个字符串变量str,内容为'你好啊'
2.构造函数创建字符串 new 引用类型
var str=new String("你好呀");//object
var str1="abc"
console.log(typeof str1)//string
//将对象类型 转换为字符串类型
var str=new String("你好呀")
console.log(typeof str.toString())//string
3.拆箱 和装箱的概念
拆箱 引用类型->值类型
装箱 值类型->引用类型
toString()拆箱
4.字符串的方法
1.charAt()
通过下标找字符
var str = "abc123";
console.log(str[2]);//c 重点
console.log(str.charAt(2));//c 了解
2.charCodeAt()
根据下标返回字符串的Unicode
var str = "我爱你a"
console.log(str.charCodeAt(0));//25105
console.log(str.charCodeAt(1));//29233
console.log(str.charCodeAt(2));//20320
console.log(str.charCodeAt(3));//97
3.String.fromCharCode()静态方法
把Unicode转换为字符
var str = String.fromCharCode(25105, 29233, 20320);//
console.log(str);
4.search
找到了返回下标,找不到返回-1
支持正则表达式
var str = "abc123";
console.log(str.search("c"));//2
console.log(str.search("z"));//-1
console.log(str.search(/a/));//0
5.match
找到了返回数组,找不到返回null
支持正则
var str = "abc123"
console.log(str.match("c"));//返回数组['c', index: 2, input: 'abc123', groups: undefined]
console.log(str.match("1c"));//返回null
6.indexOf
找到了返回下标,找不到返回-1
第二个参数,默认从0开始,也可以指定位置
不支持正则
var str = "abc123"
console.log(str.indexOf("c"));//2
console.log(str.indexOf("z"));//-1
console.log(str.indexOf(/a/));//-1
7.lastIndexOf()
找到了返回最后一个的下标,找不到返回-1
不支持正则
var str = "abc123"
console.log(str.lastIndexOf("c"));//8
console.log(str.lastIndexOf("c", 5));//2 其中的5,表示前5个值
8.slice
包含开始位置,不包含结束位置
var str = "台上有一位绝世美男子,今年22岁"
console.log(str.slice(7, 10));//美男子
console.log(str.slice(7));//美男子,今年22岁
9.substring
包含开始位置,不包含结束位置,可以自动调整参数的顺序
var str = "台上有一位绝世美男子,今年22岁"
console.log(str.substring(10, 7));//美男子
console.log(str.substring(7, 10));//美男子 和上面效果相同
console.log(str.substring(7));//美男子,今年22岁
10.substr
第二个参数表示要截取的个数
var str = "台上有一位绝世美男子,今年22岁"
console.log(str.substr(7));//美男子,今年22岁
console.log(str.substr(7, 3));//美男子
11.concat
合并,连接
var str1 = "我是";
var str2 = "小小易";
var str3 = str1 + str2;
var str4 = str1.concat(str2)
console.log(str3);
console.log(str4);
12.split
切割 返回一个新的数组
var str = "abc-123"
console.log(str.split());//['abc-123']
console.log(str.split(""));//['a', 'b', 'c', '-', '1', '2', '3']
console.log(str.split("-"))//['abc', '123']
13.replace
替换
var str = "小小易是一个女生";
var str1 = str.replace("女生", "帅气的女生")
console.log(str1);//小小易是一个帅气的女生
14.repeat
重复多次
var str = "我爱你"
console.log(str.repeat(100));
15.toUpperCase
小写转大写
var str = "bac123";
console.log(str.toUpperCase());
16.toLowerCase
大写转小写
var str = "ADDADFFAFA";
console.log(str.toLowerCase());
17.trim
去掉前后空白
var str = " 你好 帅哦! ";
console.log(str.trim());
console.log(str.trimEnd());
console.log(str.trimStart());
18.padEnd
后面填充
var str = "我是帅哥";
console.log(str.padStart(10, "."));
console.log(str.padEnd(10, "."));
19.padStart
前面填充
var str = "我是帅哥";
console.log(str.padStart(10, "."));
console.log(str.padEnd(10, "."));
20.includes
是否包含指定的字符,包含返回true,否则false
var str = "abc123";
console.log(str.includes("ab"));//true