字符串

109 阅读3分钟

字符串

概述

字符串是一个基础的数据结构(串),字符串也是基础的值类型(栈类型),字符串不可变。字符串一般在对应的算法中主要使用为对应的查找算法(贪心算法(马拉车算法))

字符串声明

字面量声明

使用单引号或者双引号

 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()正切