文章目录
- 字符串
- 字符串定义
- 字符串属性
- 字符串的常用方法
- 1.charAt()
- 2.indexOf()
- 3.lastIndexOf()
- 4.charCodeAt()
- 5.fromCharCode() 静态方法
- 6.字符串的查询方法search()
- 8.replace()替换方法
- 9.concat() 连接字符串
- 10.substring() 截取 不包含结束位置
- 11.sub 将内容填充到sub的html标签中,然后生成一个新的字符串进行返回
- 12.subStr 也是截取
- 13.slice 截取 和substring一个不包含结束位置
- 14.concat()字符串合并方法
- 15.split()分割方法
- 16.toString()
- 17.valueOf()
- 去掉前后空格 trim()
- 是否包含includes()
- 什么是正则表达式
- Math 数学函数
字符串
不可变的,里面的方法都不会改变原来的数组,而是返回一个新的数组。
字符串是JavaScript的一种数据类型 用“ ” 或‘ ’括起来的就是字符串.
字符串定义
第一种定义方式 常用的一种
var 变量 = 字符串值
var str='str'
第二种定义方式
使用new关键字定义:返回的是一个字符串 new会开辟新的地址空间
var strObj=new String(true)
var strObj1==new String("hello")
区别:通过直接赋值的形式是基本数据类型,通过new关键词是对象类型(引用数据类型 )。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MOn2vNLI-1649811834090)(D:\qf\stage two\笔记\photo\字符串定义.png)]
new关键字构建都是引用数据类型,拿别人的去用
引用数据类型的两个对象的值和对应的两个引用都不一样
var strObj1 = new String("hello")
var strObj2 = new String("hello")
console.log(strObj1==strObj2) //false 属于两个不同的对象
//对象跟对象相比较必须是同一个才是true
console.log(strObj1===strObj2) //false
strObj1的对象值和strObj2的对象值是否一致 不一致
其实是两个对象 strObj1是一个对象,strObj2又是一个对象,这两个对象不是一个对象
基本数据类型
使用直接赋值
符串的形式给定当前变量为基本数据类型
使用new String()进行定义的形式
构建是引用类型的对象 new String()里面的参数可以是任意类型,最后都会调用toString方法转为String类型
第三种定义方式
如果不使用new关键词,等于没有开辟新的内容来存储引用也就是当前的类型不是对象类型,即基本数据类型
var str1=String('A') //基本数据类型
var str2='A'
console.log(str1==str2)//true
console.log(str1===str2)//true
而使用new关键词 等于开辟了一个新的内存空间存储,那么类型就是对象类型
var str=new String('A')
字符串属性
数组是一个容器,字符串也是一个容器
length属性
计算字符串的长度,一个字符为一个位置
var str='123'
console.log(str.length) //3
下标
也可以通过下标获取对应的字符,下标也是从0开始到length-1结束
console.log(str[0]) //1
数组是可变,字符串是不可变
数组的length属性是可以修改的,字符串的length只能获取不能修改
str.length=10 //错误,无法设置
console.log(str.length) //3
字符串增删改查方法,不能操作原本的字符串,只能返回一个新的字符串
字符串不能改,因为字符串是常量,不能修改的量
不能通过length改变字符串的长度,不能通过下标赋值来改变字符串,所以字符串只能获取,不能修改,只读变量
var b='hello'
console.log(b)//hello
b[1]=o;
console.log(b)//打印的还是hello,不是hollo
字符串的常用方法
字符串是一个容器,对应的存在增删改查的方法。
但是由于字符串是只读 增删改查的方法不会改变原本的字符串,而是以返回一个新的字符串。
1.charAt()
通过下标查询对应的字符,相当于字符串的下标获取
var str='abc'
console.log(str[0])//a
通过chartAt()方法来获取,返回的是字符串,根据下标来获取字符串
console.log(str.charAt(0)) //a
2.indexOf()
根据字符串返回对应的第一次出现的下标
console.log(str.indexOf('a')) //0
console.log(str.indexOf('a',1)) //-1 从下标1开始找
3.lastIndexOf()
根据字符串返回第一个出现的下标,从后往前找
var str1='abca'
console.log(str1.lastIndex('a')) //3
console.log(str1.lastIndex('a',1)) //1 从下标为1的位置开始从后往前找
4.charCodeAt()
获取ascii码,获取对应下标位置的字符的ascii码
var str='abc'
console.log(str.charCodeAt(0)); //97
console.log(str.charCodeAt(1)); //98
5.fromCharCode() 静态方法
将ascii码反转为字符,利用关键词,对应的方法,这个方法为内置的静态方法。
String.fromCharCode()是根据对应的ascii码转换为对应的字符串,一般用于ascii解码为字符串。
Math.pow() 也是静态方法。
var codeStr=String.fromCharCode(100)
console.log(codeStr)
6.字符串的查询方法search()
返回第一次匹配的位置 ,返回的为当前找到的下标。
如果找不到返回-1
1.传入为string类型的时候,根据你传入的参数进行对比,返回第一次对比成功的下标,如果没有返回-1.
2.RegExp 正则对象 一般以两个//包起来.
var str='cbacbaabcabc'
var reg = /abc/
console.log(str.search(reg)) //6
8.replace()替换方法
替换匹配的值 变成另外一个值,返回一个新的字符串
var str='ababababa'
var newStr=str.replace('a','b')
console.log(newStr) //cbabababa
replace只会找到第一个匹配的 将他替换为指定的字符串
//将所有的a替换为c
//循环遍历 indexOf 找到第一个下标 如果没有找到就返回-1
for(var i=0;i<str.length;i++){
if(str.indexOf(a)!=-1){
str = str.replace('a','c')
}else{//里面没有a 就退出
break; //可以不写
}
}
console.log(str)
replace也同样支持正则
参数1为对应的搜索条件(支持string或者正则) 参数2为替换的内容
replace 是在search 的基础上替换
9.concat() 连接字符串
var str1 = “hello”;
var str2 = str1.concat(“ ”);
10.substring() 截取 不包含结束位置
console.log(str.substring(2,5))
11.sub 将内容填充到sub的html标签中,然后生成一个新的字符串进行返回
var str1=str.sub() //返回一个sub的html元素
12.subStr 也是截取
var str2 = str.substr(2,3) //从下标为2的位置开始截取,截取3个 没有写个数截取到最后
13.slice 截取 和substring一个不包含结束位置
var str3=str.slice(2,4) //不包含结束位置
var str4=str.slice() //截取从开始到结束
14.concat()字符串合并方法
将一个字符串拼接成一个字符串 返回
15.split()分割方法
将对应的字符串根据分割符 分割成对应字符串填充的数组
16.toString()
转为String类型
17.valueOf()
返回对应的原本的值
去掉前后空格 trim()
是否包含includes()
包含返回true 否则返回false
什么是正则表达式
正则表达式是一个用于匹配的表达式 它可以用来匹配任意的字符串
RegExp为正则对象 一般的正则表达式以//包起来 里面书写就是对应匹配的正则表达式
正则表达式的常用内容
1.^表示开头 $符号表示结束
var reg=/^abc$/
//以a开头,以c结尾,中间包含b
console.log(str.search(reg));//查找正则匹配的abc出现第一次出现的位置 -1
var str='abc'
console.log(str.search(reg)) //0
2.[]表示元素其中一个,{}表示个数
var str='abcdefg'
var rex=/[adf] //[adf]表示adf中其中一个满足即可
console.log(str.search(rex)) //0
var str='abcdef'
var rex=/[ac]{2}/
console.log(str.search(rex)) //-1
//表示个数为两个,可以是a也可以是c
var str='aabccd'
var rex=/[ac]{2}/ //匹配的是aa 或ac或cc或ca 都可以
console.log(str.search(rex)) //0
search搜索的内容必须要连在一起,确保返回的下标是一个
3.+表示一个或多个
var str = "bbaacca"
var rex=/[a]+/ //匹配a或aa或aaa...
console.log(str.search(rex)) //2
4.在[ ]内可以用-表示区间但是必须是正的区间
var rex = /[A-Z]/ //匹配A B C D...Z 26个字母
var rex=/[0-9]/ //匹配的是0 1 2 3 4...9 10个数值
var rex=/X-Z/
var rex=/[a-zA-Z1-9]/ //匹配大写字母小写字母以及1-9的数字
var rex=/[A-z]/ //正区间 大写字母到小写字母 以ascii码
5.\w表示字母数字以及下划线 , \W 相反,表示除了字母数字及下划线
var rex=/\w/
var str='_1234A'
console.log(str.search(rex));
6.\s表示空白字符 , \S表示非空白字符
Math 数学函数
有一系列数学计算的函数(静态函数)
1.静态属性 Math.PI
console.log(Math.PI)
2.科学计算e Math.E
console.log(Math.E)
3.求大小 max-最大值 min-最小值
console.log(Math.max(1,2)) //2
console.log(Math.min(1,2)) //1
4.关于取整的几个方法
console.log(Math.floor(3.9)) //3 向下取整
console.log(Math.ceil(3.1)) //4 向上取整
//四舍五入
console.log(Math.round(3.5)) //4
console.log(Math.round(3.4)) //3
5.幂次方
console.log(Math.pow(1,10)) //1的10次方 1
console.log(Math.pow(2,3)) //2的3次方
6.开平方
console.log(Math.sqrt(9)) //3
7.随机数
console.log(Math.random()) //随机数生成0-1的数 不包含1 包含0
随机数没有均衡随机
8.取绝对值
console.log(Math.abs(-1)) //1