JavaScript中的字符串内置功能以及包装对象

本文详细介绍了JavaScript字符串的内置功能如大小写转换、切片、分割等,以及包装对象如何处理字符串操作。重点讲解了toUpperCase(), toLowerCase(), substr(), substring(), split(), indexOf(), toValue(), charAt()和parseInt()等方法。同时揭示了包装对象的本质和为何能实现这些操作。

一、字符串内置功能

在这里插入图片描述

1、比较重要的字符串内置功能

1.toUpperCase(),toLocaleLowerCase()
       var str = "post"
        var re = str.toUpperCase() //转大写
        var re2 = str.toLocaleLowerCase() //转小写
        var re3 = str[1] //字符串也有下标
        var re4 = str.length //字符串也有length
        console.log(re, re2, re3, re4);

结果:
在这里插入图片描述

2.substr()
   var str = "hello"
        var re = str.substr(2, 2) 
        //从下标2开始,截2个字符,不会改变原字符串
        //from可以是负数,-1为o,-2为l,-3为l
        console.log(re, str);

结果:
在这里插入图片描述

3.substring()
   var str = "hello"
        var re = str.substring(1, 3)
        //左开右闭(1,3]第start个元素到第end个元素
        //不改变原字符串
        console.log(re, str);

结果:
在这里插入图片描述

4.split()
        var str = "hello"
        var re = str.split("")
        //截取出来,放在数组中,不改变原字符串
        //剪""是每一个都剪放在数组中,剪不存在的是剪整个
        console.log(re, str);

结果:
在这里插入图片描述

5.slice(),substring()
var str = "hello"
        var re1 = str.slice(2, 4)
        //slice与substring一样的
        var re2 = str.substring(2, 4)
        // //左开右闭(1,3]第start个元素到第end个元素
        // //不改变原字符串
        console.log(re1, re2, str);

结果:
在这里插入图片描述

6.indexOf()
 var str = "abcdef"
        var re = str.indexOf("b", 2)
        //返回子串在字符串中的下标,字符串没有这个子串就是-1
        //第二个参数不写默认为0,从下标2开始检索
        console.log(re, str);

结果:在这里插入图片描述

7.valueOf()
    var str = "hello"
        var strobj = new String("hqyj")
        var re = str.valueOf()
        var re1 = strobj.valueOf()
        console.log(re, strobj, re1, typeof strobj);

结果:在这里插入图片描述

str.charAt()

var str = “HELLO WORLD”;
var n = str.charAt(2)
//返回字符串中的第三个字符,即’L’。

parseInt(‘34’, 37)

      var c = parseInt('34', 37); //第二个参数超出规定范围,所以结果转为NaN
      console.log(c); //NaN

      var d = parseInt('34', 36); //判断’34’ 是否为36进制数字,如果是,则转换成整数;如果不是,则返回NaN
      console.log(d); // 112

      var e = parseInt('101', 2); // ‘101’ 属于 指定的 二进制 转为整数并自动转为十进制
      console.log(e); // 5

      var f = parseInt('102', 2); //将有效的二进制部分转成整数并转成十进制
      console.log(f); //2

      var g = parseInt('201', 2); //开头部分没有符合二进制的部分
      console.log(g); // NaN

二、包装对象

1.

var s = "hello world!";
var word = s.substring(s.indexOf(" ")+1,s.length);

这里变量s只是一个字符串原始类型,它怎么会有属性(s.length)和方法(s.indexOf()、s.substring())呢?没错,这正跟我们正要介绍的包装对象有关
原因是:只要引用了字符串s的属性,JavaScript就会将字符串值通过调用new String(s)的方式转换成对象,这个对象继承了字符串(String)对象的方法,并被用来处理属性的引用。一旦属性引用结束,这个新创建的对象就会被销毁
  同字符串一样,数字和布尔值也有各自的方法:通过Number()和Boolean()构造函数创建一个临时对象。存取字符串、数字或布尔值的属性时创建的临时对象就是包装对象。5种原始类型中的剩余两种null和undefined没有包装对象:访问它们的属性会造成一个类型错误(Uncaught TypeError)

2.

var s = "test";
s.len = 4;//给它设置一个属性
var t = s.len;
console.log(t);//undefined

有人会认为最后t就是等于4了。难道最后t不等于4吗?是的,最后t的值是undefined 。想知道为什么请看继续看解析:这里第二行代码只是创建了一个临时字符串对象,并给len属性赋值为4,随即销毁这个对象。而第三行又是通过原始字符串s创建一个新字符串对象(这个不是第二行代码创建的对象,第二行代码创建的对象已经被销毁了)并尝试读取其len属相,这个属性自然不存在,因此表达式的结果为undefined。这段代码说明了在读取字符串、数字和布尔值的属性值或方法(实际上是它们对应包装对象的属性值或方法)表现的像对象一样。但如果你试图给属性赋值,则会忽略这个操作:修改只是发生在临时对象身上,而这个临时对象并不会继续保留下来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值