4.字符串新增方法
1.方法:includes(),startsWith(),endWith()
includes():返回布尔值,作用:判断是否找到需要查找的字符(串)
startsWith():返回布尔值,作用:判断参数字符(串)是否在原字符串的头部
endWith():返回布尔值,作用:判断参数字符(串)是否在原字符串的尾部
具体例子如下:
let a = "hello world!" console.log(a.includes("llo"));//true console.log(a.startsWith("hel"))//true console.log(a.endsWith("ld!"))//true
这些方法支持第二个参数,例下:
1 let a = "hello world!" 2 console.log(a.includes("llo",2));//true 从第二个位置到结束是否存在满足条件的 3 console.log(a.startsWith("hel",0))//true 从第0个位置到结束是否存在满足条件的 4 console.log(a.endsWith("ld!",12))//true 前12个字符是否存在满足条件的
2.方法:repeat()
repeat():指将原字符串进行重复多少次再返回,不会改变原数据。例下:
let a = "hello" a.repeat(2) console.log(a);//hello console.log(a.repeat(2));//hellohello
参数为小数时,会被取整(统一向下取整)。
console.log("hello".repeat(1.6));//hello console.log("hello".repeat(2.4));//hellohello
参数为负数(<-1)或Infinity时,repeat会报错,在(-1~0)之间时,取0。
1 console.log("hello".repeat(-0.7));// "" 不会报错 2 console.log("hello".repeat(-1.5));// Invalid count value: -1.5 at String.repeat;// Invalid count value: -1.5 at String.repeat 3 console.log("hello".repeat(Infinity));// Invalid count value: Infinity at String.repeat
参数为NaN时,取0。
console.log("hello".repeat(NaN));// "" 不会报错
参数为字符串时,会将字符串转为数字,转不了时取0。
console.log("hello".repeat("lalala"));// "" 不会报错 console.log("hello".repeat("2"));// "hellohello"
3.方法:padStart(),padEnd()
ES2017(ES8)引入了字符串长度补全的功能。padStart()头部补全,padEnd()尾部补全。
console.log("hello".padStart(10,"1"));//11111hello console.log("hello".padEnd(10,"1"));//hello11111 //补齐字符长度过长,超出规定长度会被裁切 console.log("hello".padStart(10,"123456789"));//12345hello console.log("hello".padEnd(10,"123456789"));//hello12345 //规定长度小于原字符串长度,不会补齐也不会裁切 console.log("hello".padStart(3,"123456789"));//hello console.log("hello".padEnd(3,"123456789"));//hello
上述代码,会发现padStart(),padEnd()有两个参数,第一个参数规定了字符长度,第二个参数为补齐的字符串。在需要补齐的字符串超出规定字符长度时,补齐字符会被裁切。在规定字符小于原字符串长度时,不会补齐也不会裁切。
在省略第二个参数时,补齐参数会默认为空格补齐。如下
console.log("hello".padStart(10));// hello console.log("hello".padEnd(10));//hello
4.方法:trimStart(),trimEnd(),trim()
ES2019(ES20)对字符串新增了trimStart(),trimEnd()这两个方法。它们与trim()作用一致,trimStart()用来消除字符串头部的空格,trimEnd()用来消除字符串尾部空格。
console.log(" hello ".trim())//'hello' console.log(" hello ".trimStart())//'hello ' console.log(" hello ".trimEnd())//' hello'
值得注意的是不仅可以清除空格,对于字符串头部、尾部的tab、换行产生的空白字符也可以清除。
我们在代码中使用trim(),会发现他还有两个方法。trimLeft()是trimStart()的别名,trimRight()是trimEnd()的别名,作用是一样的。
5.方法:replaceAll()
ES2021引入了replaceAll()方法,为了解决replace()只能替换匹配第一个满足条件的字符,增加了这个可以全局替换的方法。如下
console.log("hell,world!".replace("l","z"))//hezl,world! 只会替换第一个l,对后面的l不进行替换 console.log("hell,world!".replaceAll("l","z"))//hezz,worzd! 会将字符串中所有l都替换为z
在没有replaceAll()方法时,我们全局替换一般使用正则替换。如下
1 console.log("hell,world!".replace("l","z"))//hezl,world! 2 console.log("hell,world!".replace(/l/g,"z"))//hezz,worzd! 3 console.log("hell,world!".replace(/l/,"z"))//hezl,world! 4 console.log("hell,world!".replaceAll("l","z"))//hezz,worzd! 5 console.log("hell,world!".replaceAll(/l/g,"z"))//hezz,worzd! 6 console.log("hell,world!".replaceAll(/l/,"z"))//String.prototype.replaceAll called with a non-global RegExp argument at String.replaceAll
注意:replaceAll()在使用正则时,如果不加g,会报错。
replaceAll(匹配字符,替换字符)第二个参数表示替换字符,可以使用一些特殊的字符串进行替换。如下
$&:匹配的字符串(将匹配的字符串替换为匹配的字符串,就是原样返回 0.0一脸懵)。
$`:匹配结果前面的文本(每次匹配都是将匹配字符替换为当前匹配字符位置前面的字符串)
$‘:匹配结果后面的文本(每次匹配都是将匹配字符替换为当前匹配字符位置后面的字符串)
$n:匹配成功的第n组内容,n从1开始,这个参数生效的前提是,匹配字符必须为正则表达式
$$:指美元符号$
例子如下:
console.log("hello".replaceAll("l","$&"))//"hello" $&这里指"l",也就是将l替换为l,返回数据不变 console.log("hello".replaceAll("l","$`"))//"hehehelo" 在匹配第一个"l"时,"$`"指第一个"l"之前的数据,为"he",在匹配第二个"l"时,"$`"指第二个"l"之前的数据,为"hel" console.log("hello".replaceAll("l","$'"))//"helooo" 在匹配第一个"l"时,"$`"指第一个"l"之后的数据,为"lo",在匹配第二个"l"时,"$`"指第二个"l"之后的数据,为"o" console.log("hello".replaceAll("l","$n"))//"he$n$no" 使用"$n"第一个参数必须为正则,不为正则着不会解析"$n" console.log("hello".replaceAll(/(he)(ll)/g,"$2$1"))//"llheo" 这里"$1"指的是"he","$2"指的是"ll",意为将第一个匹配的"he"更换为"$2"表示的"ll",将第二个匹配的"ll"更换为"$1"表示的"he" console.log("hello".replaceAll("l","$$"))//"he$$o" "$$"指美元$,"l"替换为"$"
replaceAll()第二个参数也可以为一个函数,函数返回值为替换字符。
这个函数的参数可以为多个,第一个参数为捕捉到的匹配内容,第二个参数捕捉到是组匹配(有多少个组匹配,就有多少个参数),后面还有两个参数,倒数第二个参数为捕捉到的内容在真个字符串中的位置,最后一个参数为原字符串。
1 console.log("hello".replaceAll("l",()=>{return "z"}))//"hezzo" 2 let text = "hello"; 3 function replaceFun(match,val1,val2,val3,index,str){ 4 console.log(match) //hello 匹配的字符串 5 console.log(val1) //he 第一个组匹配 6 console.log(val2) //ll 第二个组匹配 7 console.log(val3) //o 第三个组匹配 8 console.log(index) //0 匹配的位置下标 9 console.log(str) //hello 原始字符串 10 return [val1,val2,val3].join("-"); 11 } 12 console.log(text.replaceAll(/(he)(ll)(o)/g,replaceFun)) //he-ll-o
6.方法:at()
at()方法接收一个整数作为参数,返回参数指定位置的值,支持负索引(倒着查找)。如果参数大于字符长度,返回值为undifined。
let text = "hello"; console.log(text.at(0))//h console.log(text.at(5))//undifined
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?