JS中的常用字符串方法
2020年3月2日
charAt()
返回特定位置的字符
let s = 'moking'
console.log(s.charAt(2)) // k
// 类似于[]
console.log(s[2]) //k
concat()
连接两个字符串文本,并返回一个新的字符串
let s1 = 'my name is '
let s2 = 'moking'
let s = s1.concat(s2)// my name is moking
// 类似于
s1 + s2
//数组也可以使用这个方法拼接
let arr1 = [1, 2, 3]
let arr2 = [4, 5, 6]
let arr = arr1.concat(arr2) // [1, 2, 3, 4, 5, 6]
// 数组相加时会变转换成字符串
arr1 + arr2 // "1,2,34,5,6"
includes()
判断一个字符串里是否包含其他字符串
let s1 = 'hello world'
let s2 = 'hello'
s1.includes(s2) // true
s2.includes(s1) // false
startsWith()
判断字符串的起始位置是否匹配其他字符串中的字符
let s1 = 'hello world'
let s2 = 'hello'
s1.startsWith(s2) // true
s1.startsWith('a') // false
endsWith()
判断一个字符串的是否以给定字符串结尾,结果返回布尔值
let s1 = 'hello world'
let s2 = 'world'
s1.endsWith(s2) // true
s1.endsWith('a') // false
indexOf()和lastIndexOf()
从字符串对象中返回首个被发现的给定值的索引值,如果没有找到则返回-1。lastIndexOf()
为匹配最后一个.
var s = 'mokingoo';
console.log(s.indexOf('o')) // 1
console.log(s.indexOf('a')) // -1
console.log(s.lastIndexOf('o')) // 7
match()
使用正则表达式与字符串相比较。
返回值:
- 如果使用
g
标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。 - 如果未使用
g
标志,则仅返回第一个完整匹配及其相关的捕获组(Array
)。 在这种情况下,返回的项目将具有如下所述的其他属性。
附加属性:
groups
: 一个捕获组数组 或undefined
(如果没有定义命名捕获组)。index
: 匹配的结果的开始位置input
: 搜索的字符串.
var str = 'ABcmogCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
var regexp = /[A-E]/gi //全局和忽略大小写
var matches_array = str.match(regexp)
console.log(matches_array)
// ["A", "B", "c", "C", "D", "E", "a", "b", "c", "d", "e"]
var str = '我出生 1997 年, 现在 2020 年,我马上 23 岁了';
var rex = /\d+/g
str.match(rex) // ["1997", "2020", "23"]
str.match('20')// 不使用正则 ["2", index: 15, input: "我出生 1997 年, 现在 2020 年,我马上 23 岁了",]
padEnd() 和 padStart()
padEnd()
方法会用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串。从当前字符串的末尾(右侧)开始填充。padStart()
方法用另一个字符串填充当前字符串(重复,如果需要的话),以便产生的字符串达到给定的长度。填充从当前字符串的开始(左侧)应用的。
参数:
targetLength
当前字符串需要填充到的目标长度。如果这个数值小于当前字符串的长度,则返回当前字符串本身。padString
填充字符串。如果字符串太长,使填充后的字符串长度超过了目标长度,则只保留最左侧的部分,其他部分会被截断。此参数的缺省值为 ” “
'abc'.padStart(10); // " abc"
'abc'.padStart(6,"123465"); // "123abc"
'abc'.padStart(8, "0"); // "00000abc"
'abc'.padStart(1); // "abc"
'abc'.padEnd(10); // "abc "
'abc'.padEnd(10, "foo"); // "abcfoofoof"
'abc'.padEnd(6, "123456"); // "abc123"
'abc'.padEnd(1); // "abc"
repeat()
返回指定重复次数的由元素组成的字符串对象
参数:count
介于0和正无穷大之间的整数,表示在新构造的字符串中重复了多少遍原字符串。
"abc".repeat(-1) // RangeError: repeat count must be positive and less than inifinity
"abc".repeat(0) // ""
"abc".repeat(1) // "abc"
"abc".repeat(2) // "abcabc"
"abc".repeat(3.5) // "abcabcabc" 参数count将会被自动转换成整数.
"abc".repeat(1/0) // RangeError: Invalid count value
replace()
被用来在正则表达式和字符串直接比较,然后用新的子串来替换被匹配的子串。
const p = 'abc cba abc cba'
const regex = /abc/gi
console.log(p.replace(regex, '123'))
// 123 cba 123 cba
console.log(p.replace('abc', '321'))
// 321 cba abc cba
search()
对正则表达式和指定字符串进行匹配搜索,返回第一个出现的匹配项的下标
const p = 'abc cba abc cba'
const regex = /abc/gi
console.log(p.search(regex)) // 0
console.log(p.search('abc')) // 0
slice()
摘取一个字符串区域,返回一个新的字符串
const str = 'My name is Moking.'
console.log(str.slice(1)) // y name is Moking.
console.log(str.slice(5))// me is Moking.
console.log(str.slice(0, 7))// My name
console.log(str.slice(-7, -1))// Moking
split()
通过分离字符串成字串,将字符串对象分割成字符串数组
const str = 'My name is Moking'
const words = str.split(' ')
// ["My", "name", "is", "Moking"]
const w = str.split(' ', 2)
// ["My", "name"]
substring()
返回在字符串中指定两个下标之间的字符
var s = "Moking is me"
// 输出: Moking
s.substring(0,6)
s.substring(6,0)
s.substring(6,NaN)