字符串
概述
字符串是一个基础的数据结构(串),字符串也是基础的值类型(栈类型),字符串不可变。字符串一般在对应的算法中主要使用为对应的查找算法(贪心算法(马拉车算法))
字符串声明
字面量声明
使用单引号或者双引号
var str = 'hello'
var str = "hello"
使用字符串模板
//解析对应的js代码 ${} 里面可以解析对应的js代码
var n = 10
var str = `
你的值为${n + 1}\`
console.log(str) //你的值为11
new关键词声明
var str = new string()// 无参 构建一个空的字符串对象
//传入对应的参数
var str = new string(1,2,3)
console.log(str)//123
字面量声明和new关键词声明的区别
-
字符串声明的变量typeof为string
-
new关键词声明的变量typeof为object
-
值和值之间是相等的 新的对象和另一个新的对象是不相等的([]!=[])
-
new关键词构建的字符串对象指向对应的值(new string(123)=="123")
console.log(new String(12) == new String(12)) //false console.log(new String(12) == "12") //true console.log(new String(12) === "12") //false var str = new String(45) var str1 = str console.log(str === str1) //true console.log([] == []) //false
字符串相关属性
-
字符串具备length属性(只读属性)(长度)
var str = abc" console.log(str.length) //3 str.length = 5 //length是只读属性 不允许赋值 console.log(str.length)//3 -
字符串里面的字符可以使用下标进行访问
var str ="abc" //通过下标访问对应的字符串中的字符 console.log(str\[0]) //a //可以对字符串进行遍历 for(var i=0;i\<str.length;i++){ console.log(str\[i]) }
字符串的方法(都具备返回值)
已返回一个新的字符串来实现
- 添加的方法
以字符串拼接的形式进行添加(+)
var str ="abc"
var newStr = str + "dfg"
console.log(str) //字符串不可变
console.log(newStr) //abcdfg
concat方法(连接多个字符串)
//concat 拼接字符串
var str ="abc"
//字符串的方法的参数会进行隐式转换 转为对应的string类型 (自动调用toString方法)
var concatStr = str.concat("def",123)
console.log(str) //abc
console.log(concatStr) //abcdef123
- 删除的方法 (截取)
substring方法(从开始下标截取到结束下标)
var str ="abcdefg"
//传入俩个参数 第一个参数开始位置 第二个参数表示结束位置
var str1 = str.substring(1) //从下标1开始截取到末尾
console.log(str1) // bcdefg
var str1 = str.substring(1,4) //从下标1开始截取到下标4(不包含结束位置)
console.log(str1) // bcd
var str1 = str.substring() //截取全部 不建议
console.log(str1) //abcdefg
substr(从开始下标截取到对应个数)
var str ="abcdefg"
//传入俩个参数 第一个参数开始位置 第二个参数表示个数
var str1 = str.substr(1) //从下标1开始截取到末尾
console.log(str1) // bcdefg
var str1 = str.substr(1,4) //从下标1开始截取4个
console.log(str1) // bcde
var str1 = str.substr() //截取全部 不建议
console.log(str1) //abcdefg
slice方法(从开始下标截取到结束下标)
var str =
abcdefg"
//传入俩个参数 第一个参数开始位置 第二个参数表示结束位置
var str1 = str.slice (1) //从下标1开始截取到末尾
console.log(str1) // bcdefg
var str1 = str.slice (1,4) //从下标1开始截取到下标4(不包含结束位置)
console.log(str1) // bcde
var str1 = str.slice () //截取全部
console.log(str1) //abcdefg
- 修改的方法
replace方法 替换
//替换的方法
var str ="abcdabc"
//只执行一次
//需要替换的字符串 用于替换的字符串
var replaceStr = str.replace('a', 'f')
console.log(replaceStr) //fbcdabc
var replaceStr = str.replace('abc', '123')
console.log(replaceStr) //123dabc
//replace支持正则表达式
var regx = /a/g //里面包含a g全局
var replaceStr = str.replace(regx,'b')
console.log(replaceStr)
- 查询的方法
-
indexOf 根据查询对应第一次出现的下标
var str = " abcabc" console.log(str.indexOf('a'))//0 console.log(str.indexOf('d'))//-1 找不到返回-1 console.log(str.indexOf('a',2))//从下标为2开始查找 3 (不支持传入负值) -
lastindexOf根据值查询对应出现的下标 从后往前找
var str ="abcabc" console.log(str.lastIndexOf ('a'))//3 console.log(str.lastIndexOf ('d'))//-1 找不到返回-1 console.log(str.lastIndexOf ('a',2))//从下标为2开始查找 0 (不支持传入负值) -
search搜赛 (和indexOf类似)
//search 支持正则 //根据对应的值返回下标 返回第一次找到的下标 不支持传入对应的位置 var str ="abcabc" console.log(str.search('a')) //0 console.log(str.search('d')) //-1 找不到返回-1 console.log(str.search('a', 2)) //不支持传入位置 0 //支持正则 var regx = /a/ console.log(str.search(regx)) //0 -
charAt根据下标获取字符
var str = " abc" console.log(str.charAt(1)) //获取下标为1的字符 b console.log(str.charAt(4)) //获取没有下标的值为空字符串 -
charCodeAt根据下标获取字符串的ascii码
var str ="abc" console.log(str.charCodeAt(1)) //获取b的ascii码 98 console.log(str.charCodeAt(4)) //获取没有的下标的ascii为NaN
静态的方法
使用类名(大写字母开头) 直接调用的方法叫静态方法(Math.pow)
//静态方法
//将ascii码转为字符串 传入的ascii码值
var str = String.fromCharCode(97)
console.log(str)
支持正则的方法
seach 查找 match 匹配 replace 替换 split 分割
Math相关方法
随机生成区间内的随机数 (最大值-最小值)* 随机数 + 最小值
Math相关的属性及方法都是静态方法,Math中的内容都是用于数学计算的。 属性 Math.pi Π Math.E 科学计数法 Math.min()最小值 Math.max()最大值 Math.abs()绝对值 Math.floor()向下取整 Math.ceil()向上取整 Math.round()四舍五入 Math.pow()幂次方 Math.sqrt()平方根 Math.cos()余弦 Math.san正弦 Math.tan()正切