字符串的常用方法

480 阅读3分钟

字符串的常用方法

yuque_diagram (8).jpg

所有的字符串方法都不会改变原有字符串

charAt & charcodeAt 根据索引获取字符串相应信息

  • charAt:根据索引获取指定位置的字符
  • charcodeAt:获取指定字符的ASCII码值(Unicode编码值)

charat.png

  • String.fromCharCode(十进制的Unicode值):把值按照ASCII码表中的信息,转为原有的字符,和charCode正好对应

string.from.png

substr && substring && slice 截取字符

substr.png

  • substr(n,m):从索引n开始,截取m个;第二个参数不传截取到末尾,不支持负数
  • substring(n,m):从索引n开始,截取到索引m处(不包括m),不支持负数
  • slice(n,m):从索引n开始,截取到索引m处(不包括m),支持负数
let str='zhufengpeixunyangfanqihang';
console.log(str.substr(3, 7));//=>'fengpei'
console.log(str.substring(3, 7));//=>'feng'
console.log(str.substr(3));//=>'fengpeixunyangfanqihang' 截取到末尾
console.log(str.substring(3, 10000));//=>'fengpeixunyangfanqihang' 截取到末尾
(超过索引的也只截取到末尾)
console.log(str.substring(3, 7));//=>'feng'
console.log(str.slice(3, 7)); //=>'feng'
console.log(str.substring(-7, -3));//=>'' substring不支持负数索引
console.log(str.slice(-7, -3));//=>'nqih' slice支持负数索引,倒着查
=>快捷查找:负数索引,可以按照 STR.LENGTH+负索引的方式找   =>slice(26-7,26-3)  =>slice(19,23)

toUpperCase && toLowerCase 改变大小写

  • toUpperCase :把字母全部大写
  • toLowerCase:把字母全部小写
let str='ZhuFengPeiXunYangFanQiHang';
str = str.toUpperCase();
console.log(str);//=>'ZHUFENGPEIXUNYANGFANQIHANG'
str = str.toLowerCase();
console.log(str);//=>'zhufengpeixunyangfanqihang'
// 实现首字母大写
str = str.substr(0, 1).toUpperCase() + str.substr(1);
console.log(str);//=>'Zhufengpeixunyangfanqihang'
var abc='abcdefg';
//实现首字母大写
var res=abc.substring(0,1).toUpperCase()+abc.substring(1);
console.log(res);//'Abcdefg'

indexOf && lastIndexOf && includes查询字符串

indexof.png

  • indexOf(x,y):获取x第一次出现位置的索引,y是控制查找的起始位置索引 ;没有这个字符,返回的结果是-1
  • lastIndexOf(x):最后一次出现位置的索引,没有这个字符,返回的结果是-1
  • includes(''):查询字符串中是否有这个字符,有返回true,没有则false
let str='zhufengpeixunyangfanqihang';
console.log(str.indexOf('n')); //=>5
console.log(str.lastIndexOf('n'));//=>24
console.log(str.indexOf('@')); //=>-1 不存在返回-1
if (str.indexOf('@') === -1) {
    // 字符串中不包含@这个字符
}
console.log(str.indexOf('feng')); //=>3验证整体第一次出现的位置,返回的索引是第一个字符所在位置的索引值
console.log(str.indexOf('peiy')); //=>-1
console.log(str.indexOf('n', 7)); //=>12查找字符串索引7及之后的字符串中,n第一次出现的位置索引
if (!str.includes('@')) {
    console.log('当前字符串不包含@');
}

split 以指定字符把字符拆分成数组中的某一项

和数字中join方法对应

let str='music|movie|eat|sport';
let ary=str.split('|'); //=>["music","movie", "eat", "sport"]
str=ary.join(',');
console.log(str);//=>"music,movie,eat,sport"
var str2='https://www.baidu.com/s?wd=JS&rsv_spt=1&a=1&b=2';
    var res3=str2.split('?');
    console.log(res3);//["https://www.baidu.com/s", "wd=JS&rsv_spt=1&a=1&b=2"]
    var ary=res3[1].split('&');
    console.log(ary);// ["wd=JS", "rsv_spt=1", "a=1", "b=2"]
    var obj={};
    //item是数组中的每一项 index是该项索引
    //forEach是数组的方法,只能在数组中用
    ary.forEach((item,index)=>{
        var inner=item.split('=');
        console.log(inner);//["wd", "JS"] ["rsv_spt", "1"] ["a", "1"]  ["b", "2"]
        obj[inner[0]]=inner[1];
        console.log(obj);//{wd: "JS", rsv_spt: "1", a: "1", b: "2"}
    })

replace 替换字符

str.replace(‘被替换的字符’,’用来替换的字符’)

let str='珠峰@培训@扬帆@起航';
// str = str.replace('@', '-');
// console.log(str); //=>"珠峰-培训@扬帆@起航" 
在不使用正则表达式的情况下,执行一次REPLACE只能替换一次字符
str=str.replace(/@/g, '-');
console.log(str); //=>珠峰-培训-扬帆-起航

trim去前后空格

let str=' 珠峰 ';
console.log(str.trim()); //=>"珠峰"