28 JS基础之--String包装数据类型方法总结

string的包装类型

字符串有长度属性,但是又说只有对象才有属性和方法。

实际上:
在使用字符串的属性或方法时,JS会给我们创建一个值相同的基本包装类型对象,再调用这个对象的属性和方法,这个对象使用完毕后会立刻删除掉。

var str1 = "abc";
var str2 = new String("abc");//string的包装类型

//简单数据类型无法绑定属性和方法。
str1.aaa = 111;
str2.aaa = 222;
console.log(str1.aaa);//undefiend
console.log(str2.aaa);//222

console.log(str1.length);
console.log(str1.indexOf("b"));//隐式转换,调用属性和方法的时候,
// 简单类型转换成了包装类型,使用完毕方法或者属性后又返回原来的简单数据类型。

str1和str2的本质:

这里写图片描述

基本包装类型

基本包装类型:Boolean、Number、String

什么是包装对象

当使用原始类型的值(string、number、boolean),在调用对应属性和方法的时候,内部会自动转成对应的对象。隐式创建的这个对象,就成为包装对象。

包装对象的特点

隐式创建对象后,可以调用对应的属性和方法,使用后,立马销毁,所以不能给原始类型的值添加属性和方法

引用类型和基本包装类型的主要区别就是对象的生存期

  • 使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。
  • 而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。

给索引查字符:charAt()

  • str.charAt(索引值) 可以根据索引取出str中的某一个字符
  • str[索引] html5添加的,ie9以上支持
  • charCodeAt(索引) 返回是这个字符的ASCII码,不常用

    //Unicode编码:   97-65-48 ==  aA0
    
    var str = "0Aabcdefg";
    
    console.log(str.charAt(2));//s  给索引查字符
    console.log(str[2]);//s  给索引查字符(h5新增,IE9以上支持)
    
    console.log(str.charCodeAt(0));//给索引查字符所对应的Unicode编码
    

给字符查索引indexOf()

  • str.indexOf();
  • str.indexLastOf();从字符串尾部开始寻找

    //给字符查索引,查不到返回值为-1;
    //如果字符特别长,包含完整的字符那么就是首字母的索引值。如果不全,返回值为-1;
    
    var str = "abcfdef";
    
    console.log(str.indexOf("b"));//1
    console.log(str.lastIndexOf("f"));//6
    console.log(str.lastIndexOf("x"));//-1
    console.log(str.lastIndexOf("abd"));//-1
    

字符串的连接:concat()

var str1 = "123";
var str2 = "abc";
var str3 = str1.concat(str2);//123abc

字符串切割成数组 split()

1:2:3:4:5".split(":");  // 返回 ["1","2","3","4","5"]

"|a|b|c|".split("|");    // 返回 ["", "a", "b", "c", ""] 

"hello".split("");     // 返回 ["h","e","l","l","o"]

"hello".split("", 3);  // 返回 ["h","e","l"] 

String.split()执行的操作与Array.join()执行的操作相反。

字符串的截取:slice/substr/substring

1、string.slice(start, end)
slice:四种用法;两个参数都是索引值

var str3 = "123abc";

//单个参数
console.log(str3.slice(3));//abc
//两个参数
console.log(str3.slice(2,4));//3a
//负数
console.log(str3.slice(-4));//3abc
//前大后小:返回值为"";
console.log(str3.slice(3,0));
2、string.substr(start, length)
//substr(): (索引值,长度);

//一个参数
console.log(str3.substr(3));//截取到最后
//两个参数
console.log(str3.substr(2,4));//截取的个数
//负数
console.log(str3.substr(-4));//截取后几个
//前大后小不研究:因为他是按照个数截取
3、substring:类比于slice方法。
//单个参数
console.log(str3.substring(3));
//两个参数
console.log(str3.substring(2,4));
//负数
console.log(str3.substring(-4));//获取所有
//前大后小:返回值为“”;
console.log(str3.substring(3,0));//智能调换

字符串的编码和解码

var url = "http://www.itcast.cn?username='nihao'&password=123123";

//编码和解码
console.log(url);
var str1 = encodeURIComponent(url);
console.log(str1);//BOM的一个方法;
var str2 = decodeURIComponent(str1);
console.log(str2);

有关正则表达式的3个方法:search/replace/trim

1、replace(); 根据正则替换内容
var str = "Today ,today ,today ";

//如果不用正则表达式,只把第一个today换成tomorrow
console.log(str.replace("today","tomorrow"));//Today ,tomorrow ,today 

//g是指全局替换(global) 
console.log(str.replace(/today/g,"tomorrow"));//Today ,tomorrow ,tomorrow 

//i是指忽略大小写
console.log(str.replace(/today/ig,"tomorrow"));//tomorrow ,tomorrow ,tomorrow

console.log("nihao2016".replace(/[\d]/g,"")); 
2、 trim(); 去除前后的空格
var str ="   haha   haha   ";
console.log(str.trim());//haha   haha

利用replace(),也可以实现trim()方法的功能:

//思路:找到前后的空白,然后用replace函数,把空白替换为""; 

 var str ="   haha   haha   ";
function trimStr(string) {
    return string.replace(/(^\s+)|(\s+$)/g, "");
}

console.log(trimStr(str));//haha   haha
3、search(); 给字符查索引
var str = "abcdefg";
console.log(str.search(/abc/));

字符串的特殊方法

localeCompare():包含

//localeCompare:包含
//    s1 > s2 返回正数,一般是1(包含)
//    s1 == s2 返回0(相等)
//    s1 < s2  返回负数,一般是-1(不包含)


    var str = "abcdefg";
    console.log(str.localeCompare("abc"));//1
    console.log(str.localeCompare("abcdefg"));//0
    console.log(str.localeCompare("xyz"));//-1
    console.log(str.localeCompare("abcdefgakdslfjhadkg"));//-1
    console.log(str.localeCompare("ac"));//-1

根据Unicode编码转换字符串

var str = String.fromCharCode(48,65,97);
console.log(str);

基本包装类型补充:

基本包装类型,boolean类型和number数值类型的基本包装对象我们一般不使用,因为是对象形式,会对使用造成影响。

比如boolean,如果是对象,在判断布尔的时候, 永远是true。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值