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个主要方向):
第2个参数:slice,substring中表示字符串的结束位置,substr中表示长度。
参数可否为负数:slice方法两个参数都可以为负数,substr只有第一个参数可以为负数,substring两个参数都为非负数,如果写了负数则视为0。
第1个参数大于第2个参数时:substring会交换参数位置,substr第二个参数是长度不受影响,slice开始位置在结束位置后面则返回空字符串。
indexOf()
let i=str.indexOf("敏感词", fromi)
用法:
在str中,从fromi位置开始,找下一个敏感词出现的位置。.
参数:
indexOf()方法第一个参数只能是字母和数字
返回值:
- 如果找到,返回敏感词第一个字的下标位置
- 如果没找到,返回-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
注:只能获得敏感词的位置,无法获得敏感词的内容
match()
let arr=str.match(/正则/i)
用法:
在str中查找第一个符合正则表达式要求的敏感词的内容和位置
参数:
正则里不加g时,match返回的arr数组中只有一个敏感词,但是,即有内容,又有位置
arr=["0":"敏感词内容","index":"敏感词位置"]
正则里加g后,match返回的arr数组中包含所有敏感词的内容,但是,无法显示每个敏感词的位置.
arr=["敏感词1","敏感词2","敏感词3",...]
返回值:
- 如果找到,返回一个数组
- 0位置,保存着本次找到的一个敏感词的内容
- index属性,保存着本次找到的敏感词的位置
- 如果没找到,返回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()
的别名。