字符串对象

1. 定义方式

var str = new String("stringObject");
        var str1 = 'string';
        console.log(typeof (str));//object
        console.log(str1)//string

前端对象字符串索引 js 对象字符串_字符串

字符串对象基本与字符串没有区别,写成字符串对象,只是为了更好的操作字符串唯一的区别就是用typeof判断类型的时候字符串显示的是’string’而字符串对象为’object’

2. length属性

var str = new String("stringObject");
   console.log(str.length);
   str.length=10;//不报错,但修改无效
   console.log(str.length);

前端对象字符串索引 js 对象字符串_js_02

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))//如果超出范围 输出空字符串

前端对象字符串索引 js 对象字符串_字符串_03

字符串对象访问有两种方式,一种为字符串名[索引],另一种为字符串名.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

前端对象字符串索引 js 对象字符串_js_04

第二个方法:字符串名.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

前端对象字符串索引 js 对象字符串_js字符串对象_05

注意: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);

前端对象字符串索引 js 对象字符串_前端对象字符串索引_06

我们可以看到,我们首先运行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)

前端对象字符串索引 js 对象字符串_js字符串对象_07

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)

前端对象字符串索引 js 对象字符串_js字符串对象_08

slice是从开始位置截取到结束位置,但不包括结束位置
slice如果开始位置的索引值比结束位置的索引值大,那么,会返回空字符串
slice结束位置超出范围,按默认值处理
substr参数为负数时从后向前截取个数

6. 字符串的分割

var 变量名=字符串名.split(分割符)
功能:截取字符串
返回值:将字符串按照分隔符进行切分,切分后的
每一部分,都是数组的一部分

//字符串分割
        var str='aaa,bbb,ccc'
        var array=str.split(',');
        console.log(array)

前端对象字符串索引 js 对象字符串_js_09