您的位置:首页 > Web前端 > JavaScript

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

2016-12-05 23:06 435 查看

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript