字符串的常用方法
字符串中的常用方法
所有用单引号,双引号,反引号抱起来的都是字符串
每一个字符串都是由零到多个字符组成的
str.length //=>代表字符串的长度
str[10000] //=>不存在的索引会返回undefined
charAt / charCodeAt
charAt:根据索引获取指定位置的字符
charCodeAt:获取指定字符的ASII码值(Unicode编码值)
- params参数
n[number] 获取字符指定的索引- return
返回查找到的字符(找不到的话返回的是空字符串不是undefined)或者对应的编码值
let str = "zhufengjiaoyu"; console.log(str.charAt(0)); //"z" console.log(str[0]); //"z" console.log(str.charAt(100)); //空字符串 console.log(str[100]); //undefined console.log(str.charCodeAt(0)); //"122" console.log(str.charCodeAt(100)); //NaN console.log(String.fromCharCode(122)); //"z"
实现字符串截取的三个方法
substr / substring / slice
substr(n,m):从索引n开始截取m个字符,m不写截取到末尾(后面的方法也是);
substring(n,m):从索引n开始找到索引为m处(不含m);
slice(n,m):和substring一样,都是找到索引为m处,但是slice可以支持负数作为索引,其余两个方法是不可以的;
- params参数
n[number] 获取字符指定的索引- return
返回查找到的字符(找不到的话返回的是空字符串不是undefined)或者对应的编码值
let str = "零一二三四五六七八九十"; console.log(str.substr(3,7));//三四五六七八九十 console.log(str.substr(3));//截取到末尾 console.log(str.substring(3,7));//三四五六七 console.log(str.substring(3));//截取到末尾 console.log(str.substring(-7,-3)+"1");//1不支持负数索引 console.log(str.slice(3,7));//三四五六七 console.log(str.slice(3));//截取到末尾 console.log(str.slice(-11,-3));//和console.log(str.slice(11-11,11-3));同理
indexOf(x,y) / lastIndexOf(x)
在字符串方法中兼容所有浏览器
indexOf(x,y):获取第一次出现的位置的索引,y是控制查找的起始位置索引,找不到返回-1
lastIndexOf(x):最后一次出现位置的索引,找不到返回-1
let str = "零一二三四五六七八九六十"; console.log(str.indexOf("六"));//6 console.log(str.indexOf("六",7));//11 console.log(str.indexOf("feng"));//12 console.log(str.lastIndexOf("六")); //返回的是字符串出现的索引位置11 //验证当前包不包含字符串 if (!str.includes("零")) { alert('不包含'); };
toUpperCase / tolowerCase
:转换大小写
转换为大写str.toUpperCase
转换为小写str.tolowerCase
split
:分隔符参数分割并转换为数组
stringObject.split(separator,howmany)
参数 描述
separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
let str = "零|一|二|三|四|五"; let ary = str.split("|"); console.log(ary.join(","));//零,一,二,三,四,五 //join()将数组转化为字符串,可以指定分隔符 console.log(ary.toString());//零,一,二,三,四,五
replace
:实现字符串的转换(经常伴随正则来应用)
replace(老字符,新字符);
let str = "零@一@二@三@四@五"; str = str.replace("@", "|");//零|一@二@三@四@五 只能替换一次 console.log(str); str = str.replace(/@/g , "|");//可以结合正则来使用 console.log(str);//零|一|二|三|四|五
match
localCompare
trim
trimLeft
trimRight
实现一些常用的需求,获取时间字符串的方案
时间字符串的处理>方案一
let time = "2020-3-21 12:12:12" //变为自己需要的字符串格式,例如: //2020年03月21日 12时12分12秒 //2020年03月21日 //07/24 12:06 time = time.replace("-","年").replace("-","月").replace(" ","日 ").replace(":","时").replace(":","分").replace(":","秒"); console.log(time);//2020年3月21日 12时12分12秒
方案二基于获取值的方案
let time = "2020-3-21 12:12:12" // 基于获取值的方案 let n = time.indexOf("-"); let m = time.indexOf(" "); let x = time.indexOf(":"); let y = time.lastIndexOf("-"); let z = time.lastIndexOf(":"); let year = time.substring(0,n); let month = time.substring(n+1,y); let day = time.substring(y+1,m); console.log(n,m,x,y,z);//4 9 12 6 15 console.log(year+"年0"+month+"月"+day+"日");//2020年03月21日
方案三基于split拆分
let time = "2020-3-21 12:12:12"; // 第三种方案 let n = time.split(" "); let m = n[0].split("-"); let x = n[1].split(":"); console.log(n,m,x); //["2020-3-21", "12:12:12"] (3) ["2020", "3", "21"] (3) ["12", "12", "12"]
正则基于split拆分字符串
let time = "2020-3-21 12:12:12"; let ary = time.split(/(?: |-|:)/g); console.log(ary);//["2020", "3", "21", "12", "12", "12"]