JavaScirpt_字符串


字符串

不可变的,里面的方法都不会改变原来的数组,而是返回一个新的数组。
字符串是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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值