day06-字符串

1.什么是字符串 (不能改变)

        字符串也是一个数据结构(串),将同样的内容串在一块。因为在对应的js里面字符串属于一个值类型(值类型是常量 常量是不能变)作为存储结构增删改查的方法(字符串的增删改查 不能针对于本身 而是返回一个新的字符串)

2.字符串的声明

        a.值类型赋值 (常用 栈上 )

var str = "hello world";
console.log(str == str1); //true
console.log(str === str1); //false
console.log(str === 'hello'); //true
console.log(str1 === 'hello'); //false

        b.以new关键词声明(引用了对应的值的地址)

var str = new String("abc"); //引用了空值的地址
//在堆上 重新开辟一个新的内存空间(使用new关键词会重新开辟内存空间)

3.ES6新增 字符串模板

var a = 'jack'
var str = `hello string ${a}` 
// 解析${} 以变量来解析
console.log(str); 
//hello string jack


var number = 10
var str = `您的年纪是${number}岁`
console.log(str) //您的年纪是10岁

4.new String() 和 String() 区别

  • new String是构建一个String对象 (引用数据类型 有地址指向的)

  • String 单纯的将对应的传进入的参数转为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 会开辟新的内存空间

5.字符串的属性

        length属性 返回字符串的长度(包含空格及换行)

var str = 'a b'
console.log(str.length)//3

        通过下标来获取对应的字符串

var str = 'abc'
console.log(str[0]) //a

6.自定义函数实现对应的indexOf方法及对应的lastIndexOf方法

//实现一下对应的indexOf方法
var searchStr = "abcdefabcde"
function indexOf(str,index){
    if(!index){ //当前如果是undefined的值
        index = 0 //默认为0
    }
    //得到str的长度
    var len = str.length
    //这个5是表示当前的字符串的总长度
    for(var i=index;i<searchStr.length-len;i++){
        var s = ''
        for(var j=0;j<len;j++){
            s+=searchStr[i+j]
        }
        if(s==str){
            return i
        }
    }
    return -1
}
function lastIndexOf(str,index){
    if(!index && index!=0){ //当前如果是undefined的值 或者不为0
        index = searchStr.length-1 //默认为最后一个
    }
    //得到str的长度
    var len = str.length
    //这个5是表示当前的字符串的总长度
    for(var i=index;i>=len;i--){
        var s = ''
        for(var j=len-1;j>=0;j--){
            s+=searchStr[i-j]
        }
        if(s==str){
            return i
        }
    }
    return -1
}

7.字符串的方法(返回新的字符串)

        通过下标找字符串(char 字符)

        charAt(下标)

var str = 'abc'
str.charAt(0) //返回的是a

        charCodeAt (ACSII码)

var str = 'abc'
str.charCodeAt(0) //返回的是97

        通过字符串找下标indexOf(找不到返回-1 找的到返回对应的下标值 number(第一次出现的))

        indexOf   从前往后找

var str = 'abc'
console.log(str.indexOf('ab')) //返回的下标0
console.log(str.indexOf('d')) //找不到返回-1
console.log(str.indexOf('abc',0)); //默认后面的参数不写就是从下标0开始
//可以有俩个参数 第一个参数为 对应需要查询的字符串  第二个参数为 开始查找的下标
console.log(查询的字符串,开始查找的下标)
console.log(str.indexOf('b',2)) //从下标2开始找 找第一个出现b的位置 返回-1
var str = 'abbbccde'
console.log(str.indexOf('b',2)) //从下标2开始找 找第一个出现b的位置 2

        lastindexOf   从后往前找

var str = 'abcdefgabcdef'
//lastIndexOf 从后往前找
console.log(str.lastIndexOf('abc'));//7
console.log(str.lastIndexOf('abc',str.length-1));//7
//字符串的length表示对应的长度 不写对应的后面的位置就是默认从最后一位开始
//指定从下标4开始 从后往前查找
console.log(str.lastIndexOf('abc',4));//0
//指定下标从1开始找 从后往前找 (可以包含后面的内容)
console.log(str.lastIndexOf('abc',1));//0
//search方法使用跟indexOf一样 但是search支持正则表达式 以及search不能指定开始位置 都是从0位置开始
//也就是说默认的情况下 对应的后面的下标可以省略 str.length-1

        search 方法(和indexOf一样 支持正则表达式)

var str = 'abcdefgabcdef'
console.log(str.search(/abc/,0)) //从0的位置开始找 匹配ab的内容
console.log(str.search('abc')); //0

//当前这个正则表示查找abc 全局查找g以及不区分大小写i
var regx = /abc/gi 
console.log(str.search('abc')); //0 /abc/正则表达式
console.log(str.search(regx)); //0

        静态方法(通过构造方法名直接调用的叫做静态方法 他是对应的static修饰的)

               静态方法 使用对应的类名直接点 使用static进行修饰的

         fromCharCode 将对应的ascii码转为字符串

var str = String.fromCharCode(97) //返回的是一个字符串
console.log(str) //a

        concat 将多个字符串转为连接成一个字符串返回

var str = 'hello'.concat('world')
console.log(str)//hello world


 var str = 'hello'
        var str1 = str.concat('world')
        console.log(str1);
 //连接方法concat 相当+

        

        截取的方法

      var str = 'hello'
        //传入的参数 开始的下标 结束的下标(不包含结束位置)
        var str1 = str.slice(1,3)
        console.log(str1);//el
        var str1 = str.slice()//截取全部
        console.log(str1);//hello
        var str1 = str.slice(1)//从下标1截取到末尾
        console.log(str1);//ello
        var str1 = str.slice(-1)//字符串最后一个字符
        console.log(str1);//o
        //字符串的不能变 所以没有增删改
        // 增加其实就是 字符串连接重新赋值
        str = str + ' world'
        console.log(str);

         substring(开始的下标,结束的下标)

var str = "abcdef"
//substring(开始的下标,结束的下标) 不包含结束的下标  必须具备开始位置(不支持负值) 结束位置可以写可以不写
console.log(str.substring(1));//bcdef
console.log(str.substring(1,3));//截取不包含最后一个下标 (默认不填str.length)bc


 var str = 'abcdefg'
        //substring 必须具备开始位置(不支持负值) 结束位置可以写可以不写
        var str1 = str.substring(1) //从下标截取到结尾
        console.log(str1);//bcdefg
        var str1 = str.substring(2,5) //从下标2截取到下标5
        console.log(str1);//cde

         substr(开始的下标,个数)

// substr(开始的下标,截取的个数)
var str = "abcdef"
console.log(str.substr(1));//默认的情况是截取到最后 bcdef
console.log(str.substr(1,3));//从下标1开始截取 截取个数为3个 bcd

//substr 截取 开始位置 个数
        var str = 'abcdefg'
        var str1 = str.substr(1)//从下标1开始截取到末尾
        console.log(str1);//bcdefg
        var str1 = str.substr(1,3)//从下标1开始截取3个
        console.log(str1);//bcd

        trim 去除前后空格     

 var str = '  a b  '
        var str1 = str.trim()
        console.log(str1);

        转大写  toUpperCase

var str = 'abcA'
console.log(str.toUpperCase())



var str = 'abcABcd'
        var str1 = str.toUpperCase()//转大写
        console.log(str1);

转小写 (toLowercase)

var str = 'abcA'
console.log(str.toLowerCase())

var str = 'abcABcd'
        var str1 = str.toLowerCase()//转小写
        console.log(str1);

8.支持正则的方法(4个) 同时也支持填入字符串

       【注意】g是全局变量  i是不区分大小写

        search 查找(找到返回下标 没找到返回-1) 有无g无影响

  var regx = /abc/gi
        var str = 'abc,Abc,Ab'
        //search 查找 根据正则查找对应的下标 找不到返回-1(类似于indexOf)(number)
        var index = str.search(regx)
        console.log(index);//0



var str = 'abcdefgabcdef'
console.log(str.search(/abc/,0)) //从0的位置开始找 匹配ab的内容
console.log(str.search('abc')); //0

        split 分割  将对应的字符串分割成对应的数组  和join是相对的  返回数组   有无g无影响

//split 分割的方法 将对应的字符串分割成对应的数组 (Array)和join是相对的
      var regx = /,/gi;
      var splitArray = str.split(regx);
      console.log(splitArray);


//分割 成为一个数组 split  数组变成字符串 join (默认以,)
var str = '1,2,3'
//默认不是以,作为分割 默认不分割 直接填入到数组
console.log(str.split()); //['1,2,3']
console.log(str.split(',')); //['1','2','3']

          replace 替换 (将找到的第一个字符串替换成一个新的字符串)(如果对应的正则里面有g那么全部替换否则只替换第一次找到的)

 //replace 替换的方法 将对应的内容替换成某个内容然后返回 (String)
        var regx = /abc/gi
        var str = 'abc,Abc,Ab'
        var newStr = str.replace(regx,'hello')//只会替换第一次找到的 (如果对应的正则里面有g那么全部替换否则只替换第一次找到的)
        console.log(newStr);


var str = 'abca'
var str1 = str.replace('a','hello')//将a替换成hello
console.log(str1)

          match  匹配  将匹配的内容(如果没有g没有只匹配第一个填入)填充到对应的数组返回 (Array)

//match 返回一个数组 (匹配的内容)
var str = "abcacc"
//默认只找第一个匹配的 加入到数组
var arr = str.match('a')
console.log(arr);



 //match 匹配的 将匹配的内容(如果没有g没有只匹配第一个填入)填充到对应的数组返回 (Array)
      var regx = /abc/gi;
      var str = "abc,Abc,Ab";
      var matchArray = str.match(regx);
      console.log(matchArray);

总结

  • string是不能改变的(常量)

  • string的方法返回的都是一个新的字符串

  • string的length属性是只读的(不能赋值)读取对应的字符串的长度

  • 字符串可以通过下标进行访问(string[i])

  • 字符串方法 charAt charCodeAt

  • 搜索 indexOf lastIndexOf search

  • 支持正则的方法 search replace split match

  • 截取的方法 substring substr

  • 转大写和小写 toUpperCase和 toLowerCase

  • 静态方法 fromCharCode 根据ascii转为字符串

9.Math类(数学类 一起和数学计算相关的方法都在这个里面且这个方法都是静态方法)

       属性

        PI 3.1415926

        E 科学计算法

        方法

        random 随机数

        round 四舍五入

        floor 向下取整

        ceil 向上取整

        pow 取幂次方

        sqrt 开平方

        abs 取绝对值

        max 最大值

        min 最小值

        ....

//Math的属性
        console.log(Math.PI);//圆周率
        console.log(Math.E);//科学计数法
        //相关的方法
        var number = Math.max(1,2,3)
        console.log(number);//3
        var number = Math.min(1,2,3)
        console.log(number);//1
        var number = Math.pow(2,3)//2的三次方
        console.log(number);//8
        var number = Math.sqrt(4)//将4开平方
        console.log(number);//2
        //取整 *
        // 向上取整 1.2 取 2
        console.log(Math.ceil(1.2));//2
        // 向下取整 1.99 取 1
        console.log(Math.floor(1.3));//1
        // 四舍五入 1.4 取 1 1.5 取 2
        console.log(Math.round(1.5));//2
        //随机数 random 随机生成0-1之间的数 包含0 不包含1
        console.log(Math.random());
        //abs 取绝对值 正就是正 负值也是正值
        console.log(Math.abs(-10));//10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值