基本包装类型
装箱操作: 把基本数据类型转换为对应的引用类型的操作
拆箱操作: 把引用类型转换为基本数据类型的操作,主要是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
除此之外,replace被替换的字符还可以为正则表达式
replace('正则表达式','替换为的字符')
var str="Visit Microsoft!"
str.replace(/Microsoft/, "W3School");
// 找到Microsoft这个字符串,然后替换成W3School
字符串转为数组
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
match()
match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置
var str1='hello';
console.log(str1.match('hello')); // hello
console.log(str1.match('hell')); // hell,能找到部分
console.log(str1.match('helllo'));// null
检测正则表达式
var str="1 plus 2 equal 3"
document.write(str.match(/\d+/g));// 1 2 3 找到所有的数字