// indexOf(str,index)-----查找一个指定字符串在字符串中的首次出现位置,没有返回-1,index为开始查找位置,0开始(原字符串不变)
// lastindexOf()----方法查找指定字符最后出现位置(原字符串不变)
let str='asdfaf';
str.indexOf('a'); // => 0 0是a的首次出现位置
str.indexOf('k'); // => -1 没有返回-1
str.lastIndexOf('a'); // => 4 4是a的最后一次出现位置
str.lastIndexOf('k'); // => -1 没有返回-1
// charAt(index)-----返回指定索引位置的字符,不存在则返回空字符串,而str[索引]不存在的时候则会返回undefined(原字符串不变)
// charCodeAt(index)-------在charAt的基础上将获取的值变为unicode编码值(对应ASCII编码表)(原字符串不变)
str.charAt(0); // => a 返回指定索引位置字符
str.charCodeAt(0); // => 97 返回指定索引位置字符的uniCode
// toLowerCase----转化小写(原字符串不变,返回新字符串)
// toUpperCase----转化大写(原字符串不变,返回新字符串)
str.toLowerCase(); // => asdfaf
str.toUpperCase(); // => ASDFAF
//substr(n,m) // => 从字符串n下标开始(包括n)截取m个长度的字符,原字符串不变,返回截取后的新字符串
//substring(n,m) // => 从字符串n下标开始截取到m下标位置(包含n不包含m),原字符串不变返回新字符串
//slice(n,m) // => 与substring一样,区别是支持负数索引
//上面三个方法,如果不传参数,则是返回原字符串,如果传递的索引超出最大限制,则视为截取到末尾
str.substr(1,2); // => sd
str.substring(1,2); // => s
str.slice(1,2); // => s
str.slice(-4,-1) // => dfa
// split 将字符串按照指定分割符分割成数组,原字符串不变返回新字符串
// split('') => 以单字符进行拆分 ‘abc’.split('') => [a,b,c];
let str1='a.b.c.d';
str1.split('.'); // => [a,b,c,d]
// trimLeft:去除字符串左边空格(原字符串不变,返回新字符串)
// trimRight:去除字符串右边空格(原字符串不变,返回新字符串)
// trim:去除字符串手尾空格(原字符串不变,返回新字符串)
let str2=' aa ';
str2.trim(); // => aa
str2.trimLeft(); // => aa
str2.trimRight(); // => aa
// match: 匹配一个字符串中匹配正则的部分组成的字符串(原字符串不变,返回符合部分组成数组)
// 语法: string.match(正则表达式) => 匹配string中符合正则表达式的部分,返回一个所有匹配部分组成的数组
// 如果正则不匹配则返回null,与正则的exec基本相同
// match后面括号中也可以放字符,字符串中如果有这个字符就会返回一个数组,没有这个字符则会返回null,所以也可以用来查找字符串中是否有某字符
let str3='aa11bb22cc33'
str3.match(/\d+/g) // => ['11','22','33']
// replace(a,b):实现字符的替换(将字符串中的第一个a字符替换成b字符),注意一次只能替换一个,所以它一般都配合着正则来使用,因为使用正则会一次替换掉所有的要替换的字符
// replace方法的第二个参数还可以是一个回调函数,如果第二个参数是一个回调函数,那么会默认传入三个实参,第一个是匹配到的字符(如果正则中有分组捕获,那么则会
// 将分组捕获捕获到的各项逐项当做参数传进函数中,全部传进去后在传起始匹配位置和原字符串),第二个是匹配到的字符在字符串中的,第三个是原字符串,每一次函数运
// 行的return返回值会传入字符串匹配项中去替换掉匹配项,如果不返回则使用undefined进行匹配项替换,如果第一个参数是正则表达式,第二个参数字符串中可以通过$分组索
// 引来引用前面分组中匹配的内容,$后面的分组索引如果是不存在的,像一共三个分组你整个$4,那这个$4就只能字符串$4(返回新字符串,原字符串不变)
// 有些特殊字符串没有办法拆分分部分遍历的时候也可以使用replace来进行字符串部分遍历
let str4='asdffdsa';
str4.replace('a','1'); // => 1sdffdsa
str4.replace(/a/g,'1'); // => 1sdffds1
str4.replace(/a/g,(...ary)=>{
return ary[0]+1;
}); // => a1sdffdsa1
//使用replace遍历字符串匹配部分请见https://blog.youkuaiyun.com/qq_40959677/article/details/94761883中的拆分歌词部分