字符串的概述
字符串基础数据类型属于值类型,值类型是不可以改变的。字符串的相关方法是不能改变原本的字符串的,以返回一个新的字符串做为对应的特性。字符串也是一个数据结构(存储结构)数据结构名叫做串(字符串一块组成的一个串),那么他就具备增删改查的方法。
字符串的声明创建
第一种声明直接赋值(常用)
var str = 'hello' //单引号和双引号都是字符串
var str = "您好"
第二种声明方式 使用new关键词 (重新开辟内存)
var str =new String('你好')
引用类型转为值类型 拆箱
var str = new String('哥哥')
let str1 = str.toString()//转为值类型
console.log(str1)//哥哥
值类型转为引用类型装箱
var str = '哥哥'
let str2 =new String(str)
console.log(str2) // String {'哥哥'}
new String 和 String的区别 new String会重新开辟空间
//new String和String的区别
var number1 = 10
var strNumber = String(number1) //字符串10
var strNumber1 = new String(number1) //字符串10
console.log(strNumber === '10'); // true 不会开辟新的内存空间
console.log(strNumber1 === '10'); //false 会开辟新的内存空间
- new String 会重新开辟新的内存空间
- 而String只是简单进行转换 转换的值位于栈上面
es6新增的字符串模板 ``
var number = 10
var str = `您的年纪是${number}岁`
console.log(str) //您的年纪是10岁
- 使用``来包含 里面可以识别对应的变量
- 对应需要识别的变量使用${变量名}
字符串的相关方法(不会改变原本字符串的)
字符串有length属性
var str = '哎呀.帅哥'
let length = str.length
console.log(length);
indexOf(从前到后) 找到返回下标 找不到返回-1 默认从0开始 也可以指定位置
var str = '我是帅哥,不要质疑帅哦个'
let s = str.indexOf('帅哥')//下标为2
console.log(s);
let shuai = str.indexOf('帅', 3)//下标为9
console.log(shuai);
lastIndexOf (从后往前)
//lastIndexOf 从后往前找
console.log(str.lastIndexOf('abc'));//7
console.log(str.lastIndexOf('abc',str.length-1));//字符串的length表示对应的长度 不写对应的后面的位置就是默认从最后一位开始
//指定从下标4开始 从后往前查找
console.log(str.lastIndexOf('abc',4));//0
//指定下标从1开始找 从后往前找 (可以包含后面的内容)
console.log(str.lastIndexOf('abc',1));//0
search () 找到了返回下标 找不到返回-1 ,支持正则
var str1 = '我是帅哥,不要质疑帅哦个'
let s1 = str.search(/帅/ig)//下标为2
console.log(s1);
match() 条件满足返回数组 ,不满足返回空 null 支持正常
var str = '我是帅哥,不要质疑帅哥'
var match = str.match(/哥/gi)
console.log(match);//(2) ['哥', '哥']
通过下标取值的方式
- 1)index [下标]
- 2)charAt(index)
var str = '哎呀.帅哥'
let length = str.length
console.log(str[0]);//哎
console.log(str.charAt(0));//哎
通过下标获取字符的ASCII码
var str='b我是帅哥a'
console.log(str.charCodeAt(5));//97
console.log(str.charCodeAt(2));//26159
通过ASCII码获得字符 静态方法 类.方法
console.log( String.fromCharCode(97));//a
console.log(String.fromCharCode(98));//b
截取的三种方法
slice()(开始下标,结束下标) 截取 包含开始,不包含结束 不改变原字符串 返回截取后的字符串
var str = '我是帅哥,不要质疑帅哥'
console.log(str.slice(2, 4));//帅哥
substring 与slice一样的作用 用于截取字符串 会自动调整顺序
console.log(str.substring(5, 7));//不要
console.log(str.substring(7, 5));//不要
substr(开始位置,截取多少个)
var str = '我是帅哥,不要质疑帅哥'
console.log(str.substr(5, 2));//不要
合并 + .concat()
var str1='天天'
var str2 ='向上'
console.log(str1+str2);
console.log(str1.concat(str2));//天天向上
splite() 把字符串通过指定的格式,切割成一个数组 支持指定格式的字符串
var str ='2022-11-21'
console.log(str.split());//['2022-11-21']
console.log(str.split(''))//(10) ['2', '0', '2', '2', '-', '1', '1', '-', '2', '1']
console.log(str.split('-'))//(3) ['2022', '11', '21']
console.log(str.split(/-/gi));//(3) ['2022', '11', '21']
.trim() 去掉前后空白
var str =' 我的帅哥'
console.log(str);// 我的帅哥
console.log(str.trim());//我的帅哥
转大写 .toUppercase() 转小写 .toLowercase()
var str = 'abc'
console.log(str.toUpperCase());//ABC
console.log(str.toLowerCase());//abc
replace(被替换者,新的值) 替换 返回新的字符串
var str ='台上的帅哥'
let res=str.replace('上','ddd')
console.log(str);//'台上的帅哥'
console.log(res);//台ddd的帅哥
// 所有的方法里面以函数作为的参数的函数称为高阶函数
// replace其实是一个高阶函数
var str = '你好世界'
var str1 = str.replace('好',function(value){//这个value其实就是你匹配的值
console.log(value);
return value+'坏' //返回的值其实就你用于替换的值
})
console.log(str1);//你好坏世界
repeat(次数) 重复多少次
console.log( str.repeat(12));.//重复12次
Math类
概述:Math类是用于数学运算的。他里面的属性及相关的方法都是静态的(方便调用)。
属性 property:
PI 圆周率Π
E 科学计数法
方法 function:
Math.max 最大值
Math.min 最小值
Math.pow 幂次方
Math.sqrt 开平方
Math.ceil 向上取整 *
Math.floor 向下取整 *
Math.round 四舍五入 *
Math.random 取随机数(0-1随机数 包含0不包含1)*
Math.abs 取绝对值