JS中字符串的方法小结

concat() [类似于数组的concat()方法]

连接两个字符串,返回一个新字符串,不改变原来字符串

语法:str.concat(string2, string3[, …, stringN])

返回值:新的字符串,(原字符串不变

1
2
''.concat(1,2,'3') //'123' 会先转换为字符串再连接
1+2+'3' //'33' 数字+字符串 == 字符串

slice() [类似于数组的slice()方法]

提取一个字符串的一部分,并返回一个新的字符串

语法:str.slice(start[, end]) 参数start从index=0开始 , 到end前一个数为止

返回值:新的字符串 (原字符串不变

1
2
'tom tom'.slice(2,6)
//'m t'

substring()

substring() 方法返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集。

语法:str.substring(indexStart[, indexEnd])

参数:一个 0 到字符串长度之间的整数 ,这两个参数会自动调整到 第一个参数比第二个参数小

​ (原字符串不变)

1
2
'JavaScript'.substring(9,4) === 'JavaScript'.substring(4,9) /ture
//'Scrip'

:slice()可以接受负数,substring()不行。substring()会自动调整,而slice()会变成空字符串。

substr()

substr()方法返回一个字符串中从指定位置开始到指定字符数的字符。

语法:str.substr(start[, length]) 第二个参数是长度,区分substring()的第二个参数是index

​ (原字符串不变)

1
2
'JavaScript'.substr(4,5)
//'Scrip'

####确定字符是否包含在字符串中

  • indexOf() & lastIndexOf() [类似于数组的indexIOf()方法]

这两个方法用于确定一个字符串在另一个字符串中的位置,都返回一个整数,表示匹配开始的位置。如果返回-1,就表示不匹配。

1
2
'Tom is a gay'.indexOf('a')
//7
  • string.includes(string,startIndex)返回布尔值,表示是否找到了参数字符串。

    1
    2
    3
    4
    5
    'tom is a gay'.includes('d')
    //flase
    -----------第二个参数表示开始搜索的位置
    'tom is a gay'.includes('o',1) //ture
    'tom is a gay'.includes('o',2) //flase
  • str.startsWidth(str,startIndex):返回布尔值,表示参数字符串是否在源字符串的头部。

    1
    'tom is a gay'.startsWith('gay',9) //ture
  • str.endsWidth(str,lastIndex):返回布尔值,表示参数字符串是否在源字符串的尾部。

    1
    'tom is a gay'.endsWith('is',6) //true

repeat()

语法:str.repeat(num) repeat()方法返回一个新字符串,表示将原字符串重复n次。

1
2
3
4
5
如果是小数,会被取整
'tom'.repeat(2.9) //'tomtom'
如果是-1到0之间,视为0 ;NaN也视为0
'tom'.repeat(-0.7) //''
'tom'.repeat(NaN) //''

补全字符串,类似数组push()添加

语法:str.padStart(targetLength [, padString]) / padEnd()

返回值:一个新的字符串(不改变原字符串

1
2
3
4
'x'.padStart(3) //' x' 没有第二个参数默认用空格代替
'xx'.padEnd(2,'sdfsd') //'xx' 长度如果是原来字符串本身,那么返回原字符串
'xx'.padStart(4,'kkkkkkk') //'kkxx' 多余的会舍去
'xx'.padEnd(5,'sk') //'xxsks' 不够长度的话会重复、

trim(),trimRight(),trimLeft()

trim() 方法会从一个字符串的两端删除空白字符。在这个上下文中的空白字符是所有的空白字符 (包括换行符\n、回车符\r、制表符\t、\v)

返回值:新字符串 (不改变原字符串

参数:不接受参数

语法:str.trim()

1
2
' hello world \n'.trim()
// 'hello world'

chatAt()

方法从一个字符串中返回指定的字符。

语法:str.charAt(index) ;超出index范围,就返回空字符串

1
2
'tom is a gay'.chatAt(2) //'m'
'tom is a gay'.chatAt(99) //''

toLowerCase() & toUpperCase()

toLowerCase()方法用于将一个字符串全部转为小写,toUpperCase则是全部转为大写。

语法:str.toLowerCase()

返回值:新的字符串 (不改变原字符串

1
2
'JavaScript'.toUpperCase()
"JAVASCRIPT"

match()

match方法用于确定原字符串是否匹配某个子字符串,返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配,则返回null

语法:str.match(regexp);

返回值:满足匹配条件的数组

参数:

  • 未使用参数,返回空字符串的数组[‘’]

    1
    'hello world'.match() //[""]
  • 正则表达式不带有g标志,会返回 RegExp.exec() 相同的结果,返回的数组有index(匹配在原字符串中的索引)和input(原字符串)属性。而且返回的是第一个匹配到的元素的数组

  • 参数带有g的正则表达式,返回全部匹配到的数组,而且没有index和input属性

    1
    2
    'tom is a toy'.match(/to./g)
    //['tom','toy']

遍历字符串:for…of

1
2
3
4
5
6
for(let key of 'tom'){
console.log(key)
}
//t
//o
//m