js中字符串常用方法总结 slice,substr和substring方法的对比 search() match() replace() includes()...

charAt()

let str=stringObject.charAt(index)

用法:

​ 获取下标对应的字符,也可以使用数组的访问形式 字符串[下标]。

参数:

​ index(必需):字符在字符串中的下标。

返回值:

​ 指定位置的字符。

案例:

let str = "helloworld".charAt(5);
//str="w";

charCodeAt()

let str=stringObject.charCodeAt(index)

用法:

​ 获取下标对应的字符的 Unicode 编码。

参数:

​ index(必需):字符在字符串中的下标。

返回值:

​ 返回指定位置的字符的 Unicode 编码。

案例:

let str="helloworld".charCodeAt(5)
//str=119;

toUpperCase()

let str=stringObject.toUpperCase()

用法:

​ 方法用于把字符串转换为大写。

参数:无

返回值:

​ 一个新的字符串,在其中 stringObject 的所有小写字符全部被转换为了大写字符。

toLowerCase()

let str=stringObject.toLowerCase()

用法:

​ 方法用于把字符串转换为大写。

参数:无

返回值:

​ 一个新的字符串,在其中 stringObject 的所有大写字符全部被转换为了小写字符。

slice()

let str=stringObject.slice(start,end)

用法:

​ 可截取字符串的某个部分,并以新的字符串返回被截取的部分。

参数:(包头不包尾巴)

​ start(必须):开始的下标,负数表示倒数。(-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。)

​ end:结束的下标,不包含end本身,end为空截取到最后,负数表示倒数。

返回值:

​ 一个新的字符串,旧字符串被截取的部分。

案例:

let str="Helloworld!"
console.log(str.slice(5,-1))
//world

substr()

let str=stringObject.substr(start,count)

用法:

​ 可截取从开始下标开始指定数目长度的字符。

参数:

​ start(必须):开始的下标,负数表示倒数。(-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。)

​ count:截取的长度,如果为负数则转换成0,不包含end本身,end为空截取到最后。

返回值:

​ 一个新的字符串,旧字符串中指定数目长度的字符。

案例:

let str="Helloworld!";
console.log(str.substr(5,5));
//world

substring()

let str=stringObject.substring(start,end)

用法:

​ 截取字符串中介于两个指定下标之间的字符。

参数:(包头不包尾)

​ start(必须):开始的下标,如果start大于end,则位置自动交换,如果为负数,自动转为0。

​ end:结束的下标,不包含end本身,end为空截取到最后。

返回值:

​ 一个新的字符串,旧字符串被截取的部分。

案例:

let str="Helloworld!";
console.log(str.substring(5,10));
//world

slice,substr和substring方法的对比(3个主要方向):

  1. 第2个参数:slice,substring中表示字符串的结束位置,substr中表示长度。

  2. 参数可否为负数:slice方法两个参数都可以为负数,substr只有第一个参数可以为负数,substring两个参数都为非负数,如果写了负数则视为0。

  3. 第1个参数大于第2个参数时:substring会交换参数位置,substr第二个参数是长度不受影响,slice开始位置在结束位置后面则返回空字符串。

indexOf()

let i=str.indexOf("敏感词", fromi)

用法:

​ 在str中,从fromi位置开始,找下一个敏感词出现的位置。.

参数:

​ indexOf()方法第一个参数只能是字母和数字

返回值:

  1. 如果找到,返回敏感词第一个字的下标位置
  2. 如果没找到,返回-1

简写:

​ 可省略fromi参数,如果省略fromi参数,则默认从头开始找

注:只能获得敏感词的位置,无法获得敏感词的内容

lastIndexOf()

let i=stringObject.lastIndexOf(searchvalue,fromindex)

用法:

​ 在一个字符串中的指定位置从后向前搜索,返回一个指定的字符串值最后出现的位置。

参数:

​ searchvalue(必需):规定需检索的字符串值。

​ fromindex:可选的整数参数。规定在字符串中开始检索的位置,没有就默认从最后开始向前搜索。

返回值:

​ 返回一个指定的字符串值最后出现的位置。

案例:

let i="helloworld".lastIndexOf("l");
//i=8;

search()

let i=str.search(/正则表达式/i)

用法:

​ 在str中,找第一个符合正则表达式要求的敏感词出现的位置。

参数:

​ search()方法可以使用正则表达式作为参数,这是它和indexOf()方法的区别所在

​ 但是正则表达式的全局选项g是没用的,仍然只返回找到的第一个字符下标

返回值:

  1. 如果找到,返回敏感词第一个字的下标位置

  2. 如果没找到,返回-1

注:只能获得敏感词的位置,无法获得敏感词的内容

match()

let arr=str.match(/正则/i)

用法:

​ 在str中查找第一个符合正则表达式要求的敏感词的内容和位置

参数:

​ 正则里不加g时,match返回的arr数组中只有一个敏感词,但是,即有内容,又有位置

arr=["0":"敏感词内容","index":"敏感词位置"]

​ 正则里加g后,match返回的arr数组中包含所有敏感词的内容,但是,无法显示每个敏感词的位置.

arr=["敏感词1","敏感词2","敏感词3",...]

返回值:

  1. 如果找到,返回一个数组
    • 0位置,保存着本次找到的一个敏感词的内容
    • index属性,保存着本次找到的敏感词的位置
  2. 如果没找到,返回null

注:一旦match加g,则只能返回敏感词的内容,无法再返回每个敏感词的位置了。

replace()

let str=str.replace(/正则/ig, "新值")

let str=str.replace(/正则/ig, function(keyword){
		//根据不同的keyword,获得不同的新值
		return 新值
	  })

用法:

​ 1) 将找到的所有敏感词替换为统一的新值

​ 2) 根据找到的每个名词的不同,有选择的替换成不同的新值。

参数:

​ 第一个参数是正则,第二个是一个字符串,或者是一个回调函数

返回值:

​ 若第二个参数是一个字符串时,会将所有找到的敏感词替换成统一的新值

​ 若第二个参数为回调函数时,根据找到的每个名词的不同,有选择的替换成不同的新值。

注:字符串是不可变类型,内容一旦定义好,不可改变。所以,字符串家所有的函数都无权直接修改原字符串的内容。都只能返回新字符串。如果想保存新字符串,必须自己手动用变量=接住。如果不写变量=,则新字符串会被垃圾回收!

replaceAll()

ES2021 引入了replaceAll()

一次性替换所有匹配。

String.prototype.replaceAll(searchValue, replacement)

用法:

​ 它的用法与replace()相同,返回一个新字符串,不会改变原字符串

参数:

​ searchValue:搜索模式,可以是一个字符串,也可以是一个全局的正则表达式(带有g修饰符),如果searchValue是一个不带有g修饰符的正则表达式,replaceAll()会报错。

​ replacement:一个字符串,表示替换的文本,其中可以使用一些特殊字符串。

split()

let arr=str.split("切割符")
let arr=str.split(/正则/i);

用法:

​ 1) 将一个字符串,按指定的切割符号切割成多段子字符串

​ 2) 切割符是不固定的,但是有规律

参数:

​ 是一个字符串,或者是一个正则

返回值:

​ 包含多段子字符串的数组

注:数组是可变类型: 所以数组家的大部分函数(concat,slice除外),不用等号接,就可直接修改原数组。比如: arr.sort(), arr.push() arr.reverse()等

includes()

 let result=str.includes(searchvalue, start)

用法:

​ 判断字符串是否包含指定的子字符串,如果找到匹配的字符串则返回 true,否则返回 false。

参数:

​ searchvalue(必须):要查找的字符串。

​ start(可选):设置从哪个位置开始查找,默认0。

返回值:

​ 如果找到匹配的字符串返回 true,否则返回 false。

案例:

//从第 12 个索引位置开始查找字符串:
let str = "Hello world, welcome to the Runoob."; //此处空格也占位置
let n = str.includes("world", 12);
//false

注:includes() 方法区分大小写

startsWith(), endsWith()

let result=str.startsWith(searchvalue, start);
let result=str.endsWith(searchvalue, start);

用法:

startsWith返回布尔值,表示参数字符串是否在原字符串的头部。

endsWith返回布尔值,表示参数字符串是否在原字符串的尾部。

参数:

​ searchvalue(必须):要查找的字符串。

​ start(可选):设置从哪个位置开始查找,默认0。

返回值:

​ 如果匹配的字符串在头部 / 尾部返回 true,否则返回 false。

案例:

let result="wjxstrwjx".startsWith("wjx", 0);  //true

注意:使用第二个参数n时,endsWith的行为与startsWith有所不同。它针对前n个字符,而startsWith方法针对从第n个位置直到字符串结束。

repeat()

'str'.repeat(num) 

用法:

​ 将原字符串重复n次。

参数:

​ str:要重复的字符串。

​ num:要重复的次数,如果是小数,会被向下取整,如果是负数或者Infinity,会报错,如果是NaN等同于 0,如果是字符串会先装换成数字。

返回值:

​ 按要求重复后的字符串

案例:

'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""

padStart(),padEnd()

ES2017 引入了字符串补全长度的功能。

'str'.padStart(num, 'string') 
'str'.padEnd(num, 'string')

用法:

padStart()用于头部补全,padEnd()用于尾部补全。

参数:

​ num:字符串补全生效的最大长度。

​ str:参数是用来补全的字符串。

1. 如果原字符串的长度,等于或大于最大长度,则字符串补全不生效,返回原字符串。

2. 如果用来补全的字符串与原字符串,两者的长度之和超过了最大长度,则会截去超出位数的补全字符串。
3. 如果省略第二个参数,默认使用空格补全长度。

返回值:

​ 按要补全后后的字符串

案例:

//为数值补全指定位数
'1'.padStart(10, '0') // "0000000001"
'12'.padStart(10, '0') // "0000000012"
'123456'.padStart(10, '0') // "0000123456"
//提示字符串格式
'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

trimStart()/trimLeft(),trimEnd()/trimRight()

ES2019对字符串实例新增了trimStart()trimEnd()这两个方法

const s = '  abc  ';

s.trim() // "abc"
s.trimStart() // "abc  "
s.trimEnd() // "  abc"

用法:

​ 它们的行为与trim()一致,trimStart()消除字符串头部的空格,trimEnd()消除尾部的空格。它们返回的都是新字符串,不会修改原始字符串。

返回值:

​ 按要求去空格后的新字符串。

浏览器还部署了额外的两个方法,trimLeft()trimStart()的别名,trimRight()trimEnd()的别名。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉沦与遐想。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值