基本包装类型
装箱操作: 把基本数据类型转换为对应的引用类型的操作
拆箱操作: 把引用类型转换为基本数据类型的操作,主要是valueOf()方法和toString()方法
有三种包装类型:
String
,字符串转为String对象
Number
,数值转为Number类型
Boolean
,转为Boolean类型
在了解字符串方法之前,知道基本包装类型
var str="andy";
console.log(str.length);//4
// new 构造函数,创建一个对象
var num =new Number(3); // Object
var str =new String('sdsd'); //Object
var boo =new Boolean(false);// Object
// 拆箱
var a = 10;
var o_a = new Number(a);
var b = o_a.valueOf();//这就是拆箱的过程。10
复制代码
复杂数据类型才有属性和方法
但是这个简单数据类型为什么有length属性?
基本包装类型:就是把简单(基本)数据类型 包装成为 复杂(引用)数据类型
基本数据类型就有了属性和方法
上部分的代码,在后台有以下步骤
- 把简单数据类型 包装成为 复杂数据类型
var temp=new String("andy")
- 把变量temp赋值给str
str=temp
- 销毁临时变量
temp=null
在实际应用中,不会使用基本数据类型的对象,如果使用的话,在做一些比较的时候会带来不可预料的结果
字符串的不可变性
var str="andy"
str="red"
console.log(str);//red
复制代码
虽然str中的值改变了,但其实是在内存中新开辟了一块空间,将str指向了新开辟的空间,占据了内存中的资源,导致运行变慢
因为字符的不可变性,所以不要大量的拼接字符串
字符串对象方法
因为字符串的不可变性,所有的方法操作完成都会返回一个新的字符串
根据字符返回位置
indexOf('要查找的字符',[起始的位置])
找不到返回-1
var str='改革春风吹满地,春天来了';
str.indexOf('春');// 2
str.indexOf('春',3);// 从索引号是3 的位置开始 往后查找
// 当有多个相同参数时,只找第一个
复制代码
2 .lastindexOf()
从最后的位置开始查找,找不到返回-1
根据位置返回字符
charAt(index)
// 返回指定位置的字符(index为字符串的索引)
var str='andy';
str.charAt(3);// y
//遍历所有的字符
for(var i=0;i<str.length;i++){
console.log(str.charAt(i));// a n d y
}
复制代码
charCodeAt(index)
// 获取指定位置的字符ASCII码值(index为字符串的索引)
// 目的:判断用户按下了哪个键
var str='andy';
charCodeAt(0);// 97
复制代码
str[index]
// 获取指定位置的字符
// h5新增 有兼容问题
var str='andy';
str[0];// a
复制代码
字符串拼接
concat(字符串1,字符串2....)
等效于+ ,+更加常用
var str='andy';
str.concat('aaa'); // andyaaa
// 拼接一个或多个字符串
复制代码
字符串截取
substr(start,length)
var str='改革春风吹满地,春天来了';
str.substr(2,2);// 春风
// start是索引,length是个数
复制代码
slice(start,end)
substring(start,end)
var str='改革春风吹满地,春天来了';
console.log(str.slice(2,6)); // 春风吹满
console.log(str.substring(2,6)); // 春风吹满
复制代码
start和end都是索引,前闭后开,[start,end),end取不到
end不写,截取到结束
替换字符
replace('被替换的字符','替换为的字符')
只替换找到的第一个字符
var str='andyan'
str.replace('a','b');// bndy
复制代码
字符串转为数组
split('分隔符')
// 根据分隔符分隔为数组
var str=`a=1&b=2`;
str.split('&'); // [a=1,b=2]
// 字符串中没有分隔符,就是原字符串转为数组
var atr='dsfg=dgd';
console.log(atr.split()); // ["dsfg=dgd"]
复制代码
转换大小写
toLowerCase()
转小写
toUpperCase()
转大写
var str='dafSdsSSSRR';
console.log(str.toUpperCase());//DAFSDSSSSRR
console.log(str.toLowerCase());//dafsdssssrr
复制代码
长度
str.length
获取字符串的长度
去除两边的空白
str.trim()
var str = " Runoob ";
str.trim();//Runoob
复制代码
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END