这是我参与更文挑战的第4天,活动详情查看: 更文挑战
前面两章我们学习了js中的基础数据类型String,这一章干脆就来总结一下字符串的相关操作方法。
charCodeAt
介绍: 获取字符串中指定下标对应字符串的Unicode编码,参数为指定字符的下标,如果传入下标处没有字符,将返回NaN
用法:
let str = '你好'
str.charCodeAt(0) // 20320 -> '你' 对应的Unicode编码
复制代码
应用场景: 这个方法我基本没有用过,网上搜到的应用场景就是利用这个方法获取字符的Unicode编码,之后进行一系列的操作对字符串进行加密
fromCharCode
介绍: 和 charCodeAt
方法的作用刚好相反,这个方法是返回指定Unicode编码对应的字符,参数为Unicode编码
用法:
String.fromCharCode(20320) // '你'
复制代码
应用场景: 对通过 charCodeAt
加密的数据进行解密
注意,在某些时候,
charCodeAt
和fromCharCode
可能不会出现预期的结果,比如目标字符是 ?️ 或其他特殊字符时,具体内容及解决方案建议参考另一位大佬的文章:你还在用charCodeAt那你就out了
charAt
介绍: 获取字符串中指定下标对应的字符。参数为指定字符的下标
用法:
let str = '你好'
str.charAt(0) // '你'
复制代码
应用场景: 在我们获取单个字符时使用较为方便,因为这个方法只能获取一个字符,所以我们只用传一个参数就够了
slice
介绍: 获取字符串中指定下标开始到指定下标结束的字符。参数为指定字符的下标,如果不传,则默认截取全部,如果传入下标为负数,则从末尾开始截取,请注意,无论正负,slice都严格以第一个参数为开始下标,第二个参数为结束下标
用法:
let str = '你好'
str.slice(0) // '你好'
str.slice(0, 1) // '你'
复制代码
应用场景: 当我们需要截取指定位置的多个字符时可以使用,例如截取日期中的年份。
substring
介绍: 获取字符串中指定下标开始到指定下标结束的字符。和 slice
方法同样是接收两个参数,但不同的是, substring
方法不支持负数,如果有负数或者NaN,将被转换为0,同时会将两个参数中比较小的那个作为开始下标。
用法:
let str = '你好'
str.substring(0) // '你好'
str.substring(1, 0) // '你'
复制代码
应用场景: 当我们需要截取指定位置的多个字符时可以使用,例如截取日期中的年份。
substr
介绍: 同样是截取字符串,同样是传入两个参数,不同的是,substr
第一个参数为开始截取字符的下标,第二个参数为要截取的个数
用法:
let str = 'abcde'
str.substr(0) // 'abcde'
str.substr(2, 2) // 'cd'
复制代码
应用场景: 当我们需要截取指定位置的多个字符时可以使用,例如截取日期中的年份。
indexOf
介绍: indexOf
算是我们用的比较多的一个方法,它的作用是查询字符串中有没有我们要查询的指定字符,如果有则返回指定字符第一次出现的下标,如果没有则返回 -1 ,接收两个参数,第一个参数为我们要查询的字符串,第二个参数为我们要从第几个字符开始查,默认为0
用法:
let str = 'abcde'
str.indexOf('b') // 1
复制代码
应用场景: 关键字过滤,判断地址栏是否有参数等
lastIndexOf
介绍: lastIndexOf
和 indexOf
用法类似,同样是接收两个参数,只不过 lastIndexOf
是倒着查的,返回的是指定字符最后一次出现的下标,第二个参数规定了我们从哪个下标开始往前查找。
用法:
let str = 'abcdcba'
str.lastIndexOf('b') // 5
str.lastIndexOf('b', 4) // 1
复制代码
应用场景: 用来截取有效字符,比如截取最后一个引号之前的内容
search
介绍: search
和 indexOf
用法类似,只不过只接受一个参数,参数可为字符串或正则表达式,结果将返回目标字符串中第一次出现符合传入字符串或正则表达式的位置下标,如果没找到,将返回-1
用法:
let str = 'abcdcba'
str.search('b') // 5
str.search(/CD/i) // 2
复制代码
应用场景: 同indexof
concat
介绍: 拼接字符串,将传入参数与目标字符串拼接起来,如果参数不是字符串,将调用toString()方法转为字符串。
用法:
let str = 'abc'
str.concat('def) // 'abcdef'
复制代码
应用场景: 拼接姓名/班级/地区等
split
介绍: split
方法同样是我们很常用的一个方法,他的作用是将目标字符串根据指定字符分割成数组,接收参数为字符(如果参数为空,会返回一个拥有目标字符串的数组),返回结果为一个数组
用法:
let str = 'a,b,c'
str.aplit('') // ["a", ",", "b", ",", "c"]
str.aplit() // ["a,b,c"]
'a,b,c'.split(',') // ["a", "b", "c"]
复制代码
应用场景: 通常在将后端返回参数转为数组用,与之相配合的方法有 join
toLowerCase
介绍: 返回一个字符串,将传入参数的所有字母变为小写
用法:
let str = 'Abc'
str.toLowerCase() // 'abc'
复制代码
应用场景: 通常用于模糊查询,不关心大小写的字符验证,比如验证码,或其他一些必须显示为小写字母的地方
toUpperCase
介绍: 用法与 toLowerCase
相似,只不过是将传入参数的所有字母变为大写
用法:
let str = 'Abc'
str.toUpperCase() // 'ABC'
复制代码
应用场景: 通常用于模糊查询,不关心大小写的字符验证,比如验证码,或其他一些必须显示为大写字母的地方
replace
介绍: replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
用法:
let str = 'abc'
str.replace('b', 'B') // "aBc"
复制代码
应用场景: 用来替换指定字符,比如把’2021/6/3 10:36:36′ 换成 ‘2021年6月3日 10时36分36秒’
es6新增字符方法
es6方法阮一峰老师总结的已经很完善了,直接附上链接 字符串的新增方法
本文只是总结一下常用方法,并没有把每一种方法的详细使用给写出来,写这篇文章也只是为了先打个地基,后面遇到相关方法的独特心得可以慢慢优化,每个方法的详细使用建议自行百度或者Google