九、JavaScript字符串
一、基本概念
-
-
所谓的伪数组,就是像数组一样,可以使用[]语法通过索引下标,来进行操作
-
并且具有length属性
-
但是伪数组的操作方法和数组不同,例如 push()、pop()、join()、forEach()等等,伪数组往往不能使用
-
1 var str = 'abcdefghijklmn'; 2 3 // 通过[]语法和索引下标,调用具体的数据 4 console.log(str[4]); 5 6 // 伪数组是可以通过设定length属性来删除数组单元的 7 console.log(str.length);
二、字符串的方法
1、变量.toString()
其他类型转字符串类型
2、str.indexOf(参数一,参数二)
查询字符串中是否有某个字符
-
-
返回值:匹配字符的索引下标,没有匹配内容,返回值是 -1
-
3、str.lastIndexOf(参数一,参数二)
查询字符串中是否有某个字符,返回的是最后一个匹配内容的索引下标
参数一:需要查询的字符
参数二:开始检索的位置,如果省略该参数,则会从字符串的最后一个字符开始检索
4、str.toUpperCase()
字符串所有字符大写
5、str.toLowerCase()
字符串所有字符小写
-
-
要改变字符串的原始内容,必须要将函数方法的执行结果返回值,赋值给字符串本身
-
6、str.split(间隔符号)
字符串转化为数组
1 var str = '1,2,3,4,5,6,7'; 2 var arr = str.split(','); 3 console.log(arr); // [1,2,3,4,5,6,7]
关键词替换:将字符串用str.split(要替换的内容)分割为数组,再使用arr.join(替换后的内容)拼接为字符串
7、str.replace(参数一,参数二)
字符串内容的替换
-
-
参数2:原来没有要替换进来的新内容
-
不改变字符串的原始内容
-
要改变字符串的原始内容,必须要将函数方法的执行结果返回值,赋值给字符串本身
-
默认执行懒惰模式,只替换第一个符合规范的内容
-
8、字符串的截取
所谓字符串的截取,就是从原始字符串中获取一部分内容,作为新的字符串
方法一:str.substr(参数一,参数二)
- 参数一:指定截取的起始位置
- 正数:正常下标截取
- 负数:从倒数字符串开始截取
- 参数二:指定截取的字符串长度
- 只定义参数一,从指定的位置开始,截取至字符串结束
- 正数,指定截取长度
- 负数,截取截取结果是空字符串
方法二:str.substring(参数一,参数二)
- 参数一:截取起始字符的索引(包含当前索引)
- 参数二:截取结束字符的索引(不包含当前索引)
三、字符串的应用
1、随机验证码
1 // 允许出现重复的字符 2 var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 3 4 // 存储验证码 5 var newStr = ''; 6 7 for(var i = 1 ; i <= 6 ; i++){ 8 // 随机数的范围是 0 --- str.length-1 9 var num = parseInt(Math.random()*(str.length-1+1-0) +0); 10 // 通过随机数,作为索引下标,获取字符,拼接生成新的字符串 11 newStr += str[num]; 12 }
1 // 不允许出现重复字符 2 var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 3 4 // 存储验证码 5 var newStr = ''; 6 7 for(var i = 1 ; i <= 6 ; i++){ 8 // 随机数的范围是 0 --- str.length-1 9 var num = parseInt(Math.random()*(str.length-1+1-0) +0); 10 // 新字符串中没有str[num]当前随机数获取的字符,执行写入操作 11 if(newStr.indexOf( str[num]) === -1){ 12 newStr += str[num]; 13 }else{ 14 // 生成重复字符,i--,再循环一次 15 i--; 16 } 17 }
1 // 使用while循环来实现 2 var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 3 4 // 存储新字符串 5 var newStr = ''; 6 7 // 只要新字符串长度不是6,就循环 8 while (newStr.length !== 6) { 9 // 随机数的范围是 0 --- str.length-1 10 var num = parseInt(Math.random() * (str.length - 1 + 1 - 0) + 0); 11 // 新字符串,没有当前获取的字符,就执行写入操作 12 if (newStr.indexOf(str[num]) === -1) { 13 newStr += str[num]; 14 } 15 }
2、获取扩展名
方法一:
-
获取最后一个点的索引下标
-
1 var fileName = '123.456.789.png'; 2 var ext = fileName.substr(fileName.lastIndexOf('.')+1);
方法二:
-
将字符串按照点间隔,转化为数组
-
数组前面的单元不管,最后一个单元一定存储的是扩展名
-
1 var fileName = '123.456.789.png'; 2 var arr = fileName.split('.'); 3 var ext = arr.pop();
3、多维数组转一维数组
1 const arr = [1,2,3,4,5,[6,7,8,9,[10,11,12,[13,14,15,16,[17,18,[19,20]]]]]]; 2 3 // 将多维数组, 使用toString()、String()将数组转化为字符串 4 let str = String(arr); 5 6 // 再以逗号为间隔,转化为数组 7 const newArr = str.split(',')