字符串对象
1. 定义方式
var str = new String("stringObject");
var str1 = 'string';
console.log(typeof (str));//object
console.log(str1)//string
字符串对象基本与字符串没有区别,写成字符串对象,只是为了更好的操作字符串唯一的区别就是用typeof判断类型的时候字符串显示的是’string’而字符串对象为’object’
2. length属性
var str = new String("stringObject");
console.log(str.length);
str.length=10;//不报错,但修改无效
console.log(str.length);
length的写法为字符串名.length根据上面例子的结果,我们可以知道字符串的length属性与数组的length属性是不同的,字符串的length是不可改变的。也就是说是只读的。
注意:空格或符号都算是一个元素,都是算在长度中的。
3. 字符的访问
var str = new String("stringObject");
console.log(str[0]);//字符串[索引]
console.log(str[13])//如果超出范围 输出 undefined
console.log(str.charAt(0))//charAt方法
console.log(str.charAt(13))//如果超出范围 输出空字符串
字符串对象访问有两种方式,一种为字符串名[索引],另一种为字符串名.charAt(索引)
字符串的索引起始位置与数组一致,都是从0开始。
两种方式只有1点不同,那就是在对参数超出索引范围的输出上,字符串名[索引]的输出为undefined,而charAt方法的输出值为空字符串
4. 字符的查找
字符串对象查找的两个方法
第一个方法:字符串名.indexOf(字符串名,开始位置)
功能:从前向后在字符串中查找一个字符串
返回值:如果找到返回索引,找不到返回-1
var str = new String("stringObjectstr");
console.log(str.indexOf('str',3))//在str中找'str'由于起始位置为索引=3,所以它找的后面的'str'
console.log(str.indexOf('AD'));//找不到AD所以输出为-1
第二个方法:字符串名.lastIndexOf(字符串名,开始位置)
功能:从后向前在字符串中查找一个字符串
返回值:如果找到返回索引,找不到返回-1
var str = new String("stringObjectstr");
console.log(str.lastIndexOf('str'))//从后向前查
console.log(str.lastIndexOf('str',3))//根据结果可知3为从索引为3的位置开始向前查找
console.log(str.lastIndexOf('AD'));//找不到所以输出-1
注意:lastIndexOf方法的起始位置也是索引值的位置,例如起始位置为3的话,就是从索引值为3的元素开始向后查找,包括3.也就是包括起始位置
5. 字符的替换
替换的方法:字符串名.replace(‘字符串’,‘要替换的字符串’)
var str = new String("stringObjectstr哈哈 哈哈");
str.replace('哈哈', 'haha');//字符串对象一旦创建就不能修改
console.log(str);
var a = str.replace('哈哈', 'haha');//所以,我们把它赋给了一个新的值
console.log(a);
我们可以看到,我们首先运行replace方法,然后输出str字符串,但是str字符串没有任何改变。这里并不能说我们错了,因为
字符串对象一旦创建就不能修改,跟字符串对象的length属性一样
注意:第一个参数为字符串是只能替换第一个匹配的字符
6. 字符串的截取
字符串截取的三个方法
第一个方法:字符串名.substring(开始位置,结束位置)
功能:截取字符串
返回值:返回新的字符串
var str = new String("stringObjectstr哈哈 哈哈");
var a=str.substring(0,3);//从0截取到3,但不包括3
var b=str.substring(3,0);//3>0 3和0 会互换
var c=str.substring(-1,5);//-1会被当成0
console.log(a)
console.log(b)
console.log(c)
substring是从开始位置截取到结束位置,但不包括结束位置
substring如果开始位置的索引值比结束位置的索引值大,那么,开始位置的值会与结束位置的互换
substring的参数如果为负数的话,会被当成0;
第二个方法:字符串名.substr(开始位置,截取个数)
功能:从开始位置截取一定个数的字符串,默认的话,一直截取到最后
返回值:返回新的字符串
var str = new String("stringObjectstr哈哈 哈哈a");
var a=str.substr(0,3);//从0开始,截取3个值
var b=str.substr(0);//截取个数没有的话,默认截取到最后
var c=str.substr(21);//开始位置超出字符串对象的长度是为空字符串
var d=str.substr(-1);//从后向前截取1个值
console.log(a)
console.log(b)
console.log(c)
console.log(d)
substr是从开始位置截取个数
substr如果开始位置超出字符串对象的长度是为空字符
substr截取个数没有的话,默认截取到最后
substr参数为负数时从后向前截取个数
第三个方法:字符串名.slice(开始位置,结束位置)
功能:截取字符串
返回值:返回新的字符串
var str = new String("stringObjectstr哈哈 哈哈a");
var a=str.slice(0,3);//从0截取到3,但不包括3
var b=str.slice(3,0);//3>0 返回空字符串
var c=str.slice(0,30);//没有结束位置是,默认截取到最后
var d=str.slice(-1);//从后向前截取1个值
console.log(a)
console.log(b)
console.log(c)
console.log(d)
slice是从开始位置截取到结束位置,但不包括结束位置
slice如果开始位置的索引值比结束位置的索引值大,那么,会返回空字符串
slice结束位置超出范围,按默认值处理
substr参数为负数时从后向前截取个数
6. 字符串的分割
var 变量名=字符串名.split(分割符)
功能:截取字符串
返回值:将字符串按照分隔符进行切分,切分后的
每一部分,都是数组的一部分
//字符串分割
var str='aaa,bbb,ccc'
var array=str.split(',');
console.log(array)