toString、indexOf、lastIndexOf,字符全大或全小写、charAt、charCodeAt、substring、substr、字符串.replace()和字符串.split()的区别
1, 变量.toString()
将数据类型强制转化为字符串
参数是转化的进制
var int = 100;
console.log( int.toString(8) ); → 144
数组的扁平化
将多维数组,转化为一维数组
var arr = [1,2,3,4,5,[6,7,8,9,10,[11,12,13,[14,15,16]]]];
console.log(arr);
获取数组中数值的内容,以逗号间隔
var str = arr.toString(); /* → 也可以用join */
console.log(str); → 1,2,3....,16
再将字符串转成数组
var newArr = str.split(',');
console.log(newArr); → ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"]
转化之后的所有数据类型,都是字符串
而且还不能转换话存储对象,函数的数组
要完美转化,我们之后有其他方法学习,先记住这种粗糙的方式
2, 变量.indexOf()
字符首次(从左往右第一次)出现的位置
查找数组或者字符串中是否有某个数值或者某个字母
如果有这个内容,返回值是 这个内容的 索引下标
如果没有这个数据,返回值是 -1
这里执行的是 === 全等比较
var arr = ['北京','上海','广州',1,2,3,4,5];
console.log( arr.indexOf('广州') ); → 2
console.log( arr.indexOf(5) ); → 7
console.log( arr.indexOf(500) ); → -1
console.log( arr.indexOf('5') ); → -1
3, lastIndexOf()
字符最后一次(从左往右最后一次)出现的位置
数组,字符串都可以使用
有符合条件的数据,执行结果是最后一次出现位置的索引下标
没有符合条件的数据,执行结果是-1
进行的也是 === 全等比较
var arr1 = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5];
console.log(arr1);
console.log( arr1.indexOf(5) ); → 4
console.log( arr1.lastIndexOf(5) ); → 14
console.log( arr1.lastIndexOf('5') ); → -1
4.所有字符大写,所有字符小写
不会改变字符串存储的原始内容,如果需要改变,要做赋值操作
字符串`.toUpperCase()` 字符串中所有字符大写
字符串`.toLowerCase()` 字符串中所有字符小写
做字符串判断时,有时需要先统一大小写
var str1 = 'hello word';
将函数值操作的返回值,赋值给变量
str1 = str1.toUpperCase();
console.log(str1); → hello word
var str2 = 'HELLO WORD';
str2 = str2.toLowerCase();
console.log(str2); → hello word
5.字符串.charAt()
获取指定位置的字符
[]语法也可以达到效果
var str3 = 'abcdefg';
console.log( str3.charAt(0) ); → a
6.字符串.charCodeAt()
获取指定位置的字符的编码数值
返回字符在ASCII码表中的数值
范围是 0-255 一共 256 个字符
console.log( str3.charCodeAt(0) ); → 97
7.字符串.substring()
**字符串截取**:从原始字符串(母串)中,截取一部分字符串(子串)
**参数1**: 截取起始字符的索引下标
**参数2**: 截取结束字符的索引下标
**定义1个参数**: 从指定的索引位置开始,截取至字符串的结尾
**定义2个参数**: 从指定的索引位置开始,截取至指定的结束位置索引
包含起始索引,不包含结束索引
两个参数相同,结果是空字符串
如果是第1个数值小,第2个数值大,是向字符串结尾截取
如果是第1个数值大,第2个数值小,是向字符串起始截取
**第一个参数是负数**,不管多大数值都相当于从字符串的起始位置开始截取 到指定位置,不包括指定位置
**第二个参数是负数**,相当于从指定的位置开始,向前截取,截取到字符串的起始字符串
不包括起始字符
一般使用就是定义两个正数的参数
var str4 = 'abcdefghijklmn';
只有一个参数
从索引下标是4,实际是第5个字符开始截取,到字符串的结尾
console.log( str4.substring(4) ); → efghijklmn
从索引是4,实际是第五个字符开始截取
截取至索引是5,实际是第六个字符结束
包裹索引是4的字符,不包括索引是5的字符
console.log( str4.substring(4 , 5) ); → e
从索引是4的位置开始,向索引是0的位置截取
此时,不会包括4索引的字符,会包括0索引的字符
console.log( str4.substring(4 , 0) ); → abcd
两个参数相同,结果是空字符串
console.log( str4.substring(3,3) ); → 啥也没显示-单空一行(空字符串)
两个参数都是负 结果是空字符串
console.log( str4.substring(-3,-2) ); → 啥也没显示-单空一行(空字符串)
第一个参数是负数,效果是从字符串起始位置开始截取
console.log( str4.substring(-4) ); → abcdefghijklmn
console.log( str4.substring(-2,2) ); → ab
第二个参数是负数,效果是从指定位置开始,向字符串的起始位置截取
截取至字符串的第一个字符
不包含指定位置的字符串
指定索引是3,向字符串起始位置截取
结果是 索引是2的字符(即不包括指定位置),至起始第一个字符
console.log( str4.substring(3 , -6) ); → abc
console.log( str4.substring(2,-4) ); → ab
console.log( str4.substring(3,-1) ); → abc
8.substr()
**从母串中截取子串**
**参数1**: 指定截取的起始位置
**参数2**: 指定截取的字符个数
**语法1**:只定义一个参数.从指定位置开始,截取至字符串结尾
**语法2**:定义两个参数.从指定位置开始,截取指定个数的字符
**语法3**:第一个参数是负数,指定起始位置是倒数第几个字符
var str5 = 'abcdefghijklmn';
从索引是3,也就是第四个字符开始,截取至字符串结尾
console.log( str5.substr( 3 ) ); → defghijklmn
从索引是3,也就是第四个字符开始,截取3个字符
console.log( str5.substr( 3 , 3 ) ); → def
从倒数第三个字符开始截取,截取至字符串结尾
console.log( str5.substr( -3 ) ); → lmn
从倒数第三个字符开始截取,截取两个字符
console.log( str5.substr( -3 , 2 ) ); → lm
第二个参数是负数,结果是空字符串
console.log( str5.substr( 3 , -2 ) ); → 啥也没有显示-单空一行(空字符串)
9.字符串.replace()和字符串.split()的区别
**字符串`.split()`**
将字符串按照指定的字符,切割成数组
可以用来删除字符串中的关键词
**字符串`.replace()`**
字符串内容替换函数
将制定的字符串内容,替换为新的内容
**第一个参数**:字符串原有的,要替换没的
**第二个参数**:字符串没有的,要新替换进来的
默认只能执行一次替换,要替换所有符合的内容,必须要配合正则表达式
var str6 = '北京卧槽今天卧槽的天气卧槽有点热';
将关键词替换为 ** 只能替换第一个符合的内容
str6 = str6.replace('卧槽' , '**');
console.log(str6);