字符串定义
1.字符串是javascript的一种数据类型 用"" ''(双引号和单引号)括起来的就是字符串
2.两种定义方式
//直接赋值 常用
var str = 'str'
var str1 = 'hello'
//var 变量 = 字符串值
//使用new 关键字定义
var strObj = new String(true)
通过直接赋值的形式是基本数据类型 通过new关键词是对象类型(引用数据类型)
var strA = new String(10)
var strB = new String("10")
var strC = '10'
var number = 10
console.log(strA == strC);//true
console.log(strC == strB);//true
console.log(strA == strB);//false str1的对象值和str2的对象值是否一致 不一致
//其实是俩个对象 strObj1是一个对象 strObj2又是一个对象 这俩个对象不是一个对象
console.log(strC == number);//true
console.log(strC === number);//false
console.log(strA === strC);//true
console.log(strA == number)//true 因为strA转为number类型 10 == 10
总结
1.使用直接赋值 字符串的形式给定当前变量为基本数据类型
2.使用new String()进行定义的形式 构建是引用类型的对象 new String()里面的参数可以是任意类型 最后都会调用toString方法转为String
3.如果不使用new关键词 等于没有开辟新的内容来存储引用也就是当前的类型不是对象类型(是基本对象类型) 而如果使用了new关键词 等于开辟了一个新的内存空间存储 那么就是对象类型
字符串属性
1数组是以一个容器 字符串也是一个容器
2.length属性 计算字符串的长度 一个字符为一个位置
3.也可以通过下标获取对应的字符 下标也是从0开始到length-1结束
4.数字是可变 字符串是不可变的(是常量 不能修改的量)
5.数组的length属性是可以修改的 字符串的length只能获取不能修改
6.字符串增删改查方法 不能操作原本的字符串 只能返回一个新的字符串
7.不能通过length改变字符串的长度 不能通过下标赋值来改变字符串(类型于只读变量)
字符串的常用方法
1.常用的查询方法
var str = 'abc'
str[0] // 获取a
str.charAt(0)//等同于 str[0]
str.charCodeAt(0) // 获取下标为0位置的字符a的ascii码
String.fromCharCode(100) //将ascii码反转为字符(解码)
//fromCharCode是静态方法 利用内置对象.对应的方法 这个方法为内置的静态方法
//类似的还有Math.pow
str.indexOf('a')//返回number值 根据字符串来返回对应的第一次出现的下标,找不到返回-1
str.lastIndexOf('a')//这个是从后往前找 第一个参是要找的值 第二个参是下标几开始找
还是查询方法
str.search()//可以传入string和正则表达式
1.str.search('abc')//传入为string类型的时候 根据你传入的参数进行对比 返回第一次对比成功的下标 如果没有返回-1
2.var reg = / /
//正则表达式用/ /包起来 /abc/ 匹配abc的正则
//reg = / ^abc$/ 表示要以a开头c结束的字符串
//reg = /[abc]/ [] 表示其中一个 这里表示 a b c其中一个
//reg = /[ab]{2}/ {}表示个数 这里表示可以匹配 aa ab bb ba 这个四个
//reg = / [a]+/ +表示一个或者多个 这里表示可以匹配 a aa aaa aaaa....
//reg = /[A-Za-z1-9]/[]还可以表示区间 但必须是正的区间 这里表示匹配大小写字母和1-9的数字
// \w表示字母数字及下划线 \W相反 除了字母数字及下划线其他都匹配
// \s 空白字符 \S 非空白字符
str.search(reg)
传入正则表达式
替换方法
替换匹配的值 变成另外一个值 返回一个新的字符串
var str = 'ababababa'
var newStr = str.replace('a','c')//两个值第一个是要替换的值 第二个是替换的内容
//将a 替换为c 这里只能运行 他只会找到第一个a 将a替换为c
//replace 只会找到第一个匹配的 将他替换为指定的字符串
替换所有
//利用for循环 if判断和每次 给字符串重新赋值 知道查找不到我们要的替换的
for(var i=0;i<str.length;i++){
if(str.search('a')!=-1){ //查找是否还有a 找不到为-1 不为-1就是还有
str=str.replace('a','c')//每次替换重新赋值
}else{
break;
}
}
截取方法
返回新的字符串
var str = "abcdefg";
var newStr = str.substring(1, 3); //开始位置下标 截取到结束位置下标 不包含结束位置[1,3)和slice 一样
console.log(newStr); //bc
分割方法
分割为数组 数组的join连接成字符串
var str = "a,b,cd,e";
//可以根据正则截取 返回值为string类型数组
var strArr = str.split("c"); //根据,来进行分割
console.log(strArr);
var strArr = str.split(",", 2); //limit表示数量
//不写表示所有的全部填入数组 写上去就是填入指定个数的元素到数组(从前往后填入)
console.log(strArr);
转大写 转小写 是全部转换
var str = "ABccddEF";
var str1 = str.toLowerCase();
console.log(str1); //转小写
var str2 = str.toUpperCase();
console.log(str2); //转大写
Math方法
// Math 数学他有一系列数学计算的函数(静态函数)
// 静态属性 Π
console.log(Math.PI);
//科学计算 E
console.log(Math.E);
//关于Math的静态方法
// 求大小 max 最大值 min最小值
console.log(Math.max(1,2)); //返回2
console.log(Math.min(1,2)); //返回1
//关于取整的几个方法
// 向下取整 3.9 3
console.log(Math.floor(3.9)); //3
// 向上取整 3.1 4
console.log(Math.ceil(3.1)); // 4
// 四舍五入 3.1 返回3 3.9返回4
console.log(Math.round(3.5)); //4
console.log(Math.round(3.4)); //3
//幂次方
console.log(Math.pow(1,10)); //1的10次方 1
console.log(Math.pow(2,3)); //2的3次方 8
//开平方/1
console.log(Math.sqrt(9)); //3
//随机数
console.log(Math.random()); //随机生成0-1的数 不包含1 包含0(没有1 有0) (随机数没有均衡随机)
// 去绝对值 -1 是 1 永远是正数
console.log( Math.abs(-1));