JS中字符串常用方法(更新至es15)

263 阅读3分钟

padStart / padEnd

  • 从当前字符串的开头/末尾,用另一个字符串填充当前字符串(如果需要会重复填充),直到达到给定的长度。不会改变原字符串
const str = 'string'

console.log(str.padStart(8, 'juejin')) // 'justring'
console.log(str.padEnd(8, 'juejin')) // 'stringjuejinjuejin'

at

  • 获取字符串中某一元素
const str = 'string'
console.log(str.at(2, 'r')) // 'r'

raw

  • 获取模板字符串的原始字符串形式——即,替换表达式(例如 ${foo})会被替换处理,但转义序列(例如 \n)不会被处理。
const filePath = String.raw`C:\desktop`;

console.log(`The file was uploaded from: ${filePath}`); // "The file was uploaded from: C:\desktop"

charAt:

  • 作用:获取字符串中指定索引对应的字符
  • 参数(@params):n[number]获取字符指定的索引
  • 返回值(@return):返回查找的字符
    let str = "juejinshequ";
    let res = str.charAt(4);
    console.log(res);//=>"i"

Tips:如果索引值超出了字符串长度,str[索引]和charAt的区别

    let str = "juejinshequ";
    str[100];//=>undefined
    let res = str.charAt(100);//=>""

charCodeAt:

  • 作用:获取对应的ASCII码值
  • @params:索引
  • @return:对应的ASCII码十进制对应值
    let str = "juejinshequ";
    let res = str.charCodeAt("j");//=>106
    String.fromCharCode(106);//=>"j"

substr,substring,slice实现字符串截取

substr:

  • 作用:选中从索引n开始,截取m个字符,m不写截取到末尾,支持负数索引
  • @params:n,m(m不能为负数)
  • @return:截取的字符串
    let str = "juejinshequ";
    let res = str.substr(-3,2);//=>"eq"

substring:

subString 和slice 基本都一样,唯一不同在于,subString 不支持负数索引,而slice支持负数索引

slice:

  • 作用:查找从索引n开始(包含)到索引m(不包含m)结束的字符,支持负数索引,用字符串长度加上负数索引
  • @params:n,m;如果不写m,就是查找到最后;只写n或者不写就是克隆字符串;n和m都可为负数
  • @return:截取的字符串
    let str = "juejinshequ"
    let res = str.slice(-5,-3);//=>"sh"
    str.slice();//=>"juejinshequ"

验证字符是否存在:

indexOf(x,y):获取x第一次出现位置的索引,y是控制查找的起始位置索引
lastIndexOf(x):最后一次出现位置的索引 =>没有这个字符,返回的结果是-1

  • 作用:获取字符在字符串中首次/最后一次出现的索引
  • @params:字符/索引
  • @return:索引值/-1(字符串中不包含此字符)
    let str = "juejinshequ";
    str.indexOf('jin');//验证整体第一次出现的位置,返回的索引是第一次字符所在的位置索引值
    =>"3"
    str.indexOf('u',4);//查找字符串索引4及之后的字符串中,u第一次出现的位置索引
    =>"10"

includes:

  • 作用:检测字符串中是否含有检测内容
  • @params:任意字符
  • @return:ture/false
    let str = "juejinshequ";
    let res = str.includes("u");//=>ture

字符串中字母的大小写转换

toUpperCase():转大写 toLowerCase():转小写

  • 作用:转为大写或者小写
  • @params:无
  • @return:大写或者小写的字符
    let str = "jueJINshequ";
    let res = str.toUpperCase();//=>JUEJINSHEQU

split:

  • 作用:字符串按照分割符,转换为数组,支持正则
  • @params:分割符
  • @return:分割后的数组
var str="2018 8 18";
var res=str.split(" ")//["2018","8","18"]

replace:

  • 作用:(老字符,新字符)实现字符串替换
  • @params:要替换的字符(可以跟正则),替换的字符
  • @return:替换之后的字符
    var str = "juejinshequ";
    var res = str.replace(/j/g,"Z");//=>ZueZinshequ

trim(trimLeft、trimRight):

  • 作用:去除字符串的头尾空格
  • @params:无
  • @return:除头尾空格的字符串

match:

  • 作用:可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
  • @params:规定要检索的字符串值/正则
  • @return:存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。
let str="Hello world!"
console.log(str.match("world"));//world
console.log(str.match("World"));//null
let str="1 plus 2 equal 3"
console.log(str.match(/\d+/g));//["1", "2", "3"]