JS中字符串方法对比

241 阅读10分钟

本次只是对方法的一些介绍,不涉及原理性的的东西,方法内部实现机制,后面有时间进行补充

对比

方法名描述入参返回值
charAt()查找指定字符的位置1可选,默认0Srting
charCodeAt()返回指定位置的字符的Unicode编码1可选,默认0Number
concat()连接两个后多个字符串不限定,可选String
endsWith()判断字符串是否以指定的字符串结尾(区分大小写)2可选Boolean
startsWith()判断第字符串是否以指定的字符串开始2可选Boolean
formCharCode()将Unicode编码专为字符不限定,可选String
indexOf()指定字符串首次出现的位置2可选Number
lastIndexOf()从后往前搜索,第一次出现的位置2可选Number
includes()是否包含指定子字符串2可选Boolean
match()查找一个活多个正则表达式的匹配2可选Boolean
search()查找与正则表达式匹配的值2可选Number
repeat()复制字符串指定次数,并将他们连接在一起返回1可选Sting
replace()在字符串中查找匹配的子串,并替换与正则表达式匹配的子串2可选String
replaceAll()在字符串中查找匹配的子串,并替换与正则表达式匹配的所有子串2可选String
split()将字符串分隔为数组2可选Array
slice()提取字符串的片段,并在新的字符串中返回被提取部分2可选String
substr()从起始索引号提取字符串中指定数目的字符2可选String
substring()提取字符串中两个指定的索引号之间的字符2可选String
toLowerCase()将字符串转为小写-String
toUpperCase()将字符串专为大写-String
toLocalLowerCase()根据本地主机的语言环境吧字符串专为小写-String
toLocalLowerCase()根据本地主机的语言环境吧字符串专为大写-String
trim()去除字符串两边的空白-String
valueOf()返回字符串对象的原始值-String
toString()返回一个字符串-String

charAt()

返回指定位置的字符。第一个位置为0,第二个位置为1,以此类推(和数组索引相似)。
菜鸟教程-字符串charAt

参数

参数描述默认值
index可选。字符在字符串中的位置0

返回值

类型描述
String指定位置的字符

实例

'hello word'.charAt(2); // 'l'
'hello word'.charAt(); // 'h'

charCodeAt()

反悔指定位置的字符的Unicode编码,返回值是0 - 65535之间的整数,表示给索引出的UTF-16代码单元。
菜鸟教程-字符串charAt

参数

参数描述默认值
index可选,字符在字符串中的下标0

返回值

类型描述
Number指定位置的字符的Unicode编码

实例

'hello world'.charCodeAt(1); // 101
'hello world'.charCodeAt(0); // 104
'hello world'.charCodeAt(); // 104
''.charAt(); // NaN
'hello'.charCodeAt(20); // 104

可以看出index >= str.length的时候,返回NaN

concat()

连接两个活多个字符串,不改变原字符串。
菜鸟教程-字符串charAt

参数

参数描述
str1, str2 ……, strX可选,将被连接为一个字符串的一个或多个字符串

返回值

类型描述
String两个或多个字符串连接后生成的新字符串

实例

const str1 = 'Hello ';
const str2 = 'World ';
const arr = ['k', 'i'];
str1.concat(str2, arr); // 'Hello World k,i'

'h'.concat(); // 'h'
'h '.concat(undefined); // 'h undefined'

endsWith()

判断当前字符串是否以指定的字符串结尾的(区分大小写)。
菜鸟教程-字符串charAt

参数

参数描述默认值
searchValue可选,要搜索的子字符串'undefined'
length设置字符串的长度原始字符串的长度

返回值

类型描述
Boolean如果以指定值结尾返回true,否则false

实例

let str = 'if you work hard, you will success.'
str.endsWith('success.'); // true
str.endsWith('hard,'); // false
str.endsWith('hard,', 16); // true

' undefined'.endsWith(); // true
'hh null'.endsWith(null); // true
'12313'.endsWith(1); // false
'[1]'.endsWith([1]); // false
'1'.endsWith([1]); // false
'[object Array]'.endsWith([]); // true
'[object Array]'.endsWith([1]); // false
'[object Object]'.endsWith([]); // true
'[object Object]'.endsWith({}); // true

startsWith()

检测字符串是否以指定的子字符串开始(大小写敏感)。 菜鸟教程-字符串charAt

参数

参数描述默认值
searchValue必需,要查找的字符串
start可选,查找的开始位置0

返回值

类型描述
Boolean如果字符串是以指定的字符串开头返回true,否则false

实例

let str = 'try you best';
str.startsWidth('try'); // true
// 其他特殊用法参照 endsWidth

formCharCode()

可接受一个指定的Unicode值,然后返回一个字符串。

该方法是String的静态方法,字符串中的每个字符串都由单独的Unicode数字编码指定, 菜鸟教程-字符串charAt

参数

参数描述
n1, n2, ……, nX可选,0个或多个Unicode值

返回值

类型描述
String返回代表Unicode编码的字符

实例

String.fromCharCode(72, 69, 76, 76, 79); // 'HELLO'
String.fromCharCode(); // ''
String.fromCharCode(0); // '\x00'
String.fromCharCode(undefined); // '\x00'

indexOf()

查找指定字符串值在字符串中首次出现的位置(区分大小写)。 菜鸟教程-字符串charAt

参数

参数描述默认
searchvalue可选,检索的字符串值undefined
start可选,检索的字符串值0

返回值

类型描述
Number位置,没找到则返回 -1

实例

''.indexOf(); // -1
'undefined'.indexOf() // 0
'null'.indexOf(null) // 0
'123'.indexOf(1) // 0
'123'.indexOf([1]) // 0

lastIndexOf()

菜鸟教程-字符串charAt

参数

参数描述

返回值

类型描述

实例

includes()

返回指定的字符串最后出现的位置,从后往前搜索 菜鸟教程-字符串charAt

参数

参数描述默认值
searchvalue可选,规定检测的内容undefined
start可选,检测开始的位置字符串的length - 1

返回值

类型描述
Number位置,未检测到返回 -1

实例

'welcome to read the article'.lastIndexOf('the'); // 16\
// 其他特殊用法参照 indexOf

match()

判断字符串中是否包含指定的子字符串(区分大小写)。
菜鸟教程-字符串charAt

参数

参数描述默认
searchvalue可选,要查找的字符串undefiend
start从什么位置开始0

返回值

类型描述
Boolean如果找到指定子字符串,则返回true,否则返回false

实例

'undefined'.includes(); // true
'null'.includes(null); // true
'1'.includes([1]); // true
'2'.includes(2); // true

repeat()

字符串复制指定次数。
菜鸟教程-字符串charAt

参数

参数描述默认值
可选必须,设置要复制的次数0

返回值

类型描述
String反悔复制指定次数并连接在一起的字符串

实例

'hello '.repeat(); // ''
'hello '.repeat(2); // 'hello hello '

replace()

用一个字符替换另一个字符或者与正则匹配的子串。

不改变原是字符串 菜鸟教程-字符串charAt

参数

参数描述默认值
regexpsubstr可选。规定子字符串或者要替换的模式的RegExp对象undefined
newSubStrfunction必须,一个字符串值,规定替换文本或生成替换文本的函数undefined

返回值

类型描述
String新的字符串

实例

'hello world '.replace(' '); // 'helloundefinedworld '

replaceAll()

菜鸟教程-字符串charAt

参数

参数描述默认值
regexpsubstr可选undefined
newSubStrfunction可选undefined

返回值

类型描述
String一个新的字符串。固定了替换文本或生成文本的函数

实例

'hello world '.replaceAll(' '); // 'helloundefinedworldundefined'

search()

检索字符串中指定的子字符串,或检索与正则表达式想匹配的子字符串。
菜鸟教程-字符串charAt

参数

| 参数 | 描述 | 默认值 | | --- | --- | | searchvalue | 可选。查找的字符串或正则表达式 | undefined |

返回值

类型描述
Number字符串或正则表达式匹配的String起始位置

实例

'undefined'.search(); // 0
'213'.search([1]); // 1
'213'.search(1); // 1
'213'.search('1'); // 1

split()

将字符串分隔成字符串的数组。
菜鸟教程-字符串charAt

参数

参数描述
separator可选。字符串或正则表达式,从该参数指定的地方分隔string
limit可选。限制返回数组的最大长度

返回值

类型描述
Array拆分后的数组

实例

let str = 'Could you do better?';
str.split(); // ['Could you do better?']
str.split(''); // ['C', 'o', 'u', 'l', 'd', ' ', 'y', 'o', 'u', ' ', 'd', 'o', ' ', 'b', 'e', 't', 't', 'e', 'r', '?']
str.split(' '); // ['Could', 'you', 'do', 'better?']
str.split(','); //  ['Could you do better?']

slice()

提取字符串的某一部分,并以新的字符串返回提取的部分。 使用start(包含)和 end(不包含)参数来指定字符串提取的部分。
菜鸟教程-字符串charAt

参数

参数描述默认
start可选。如果为负数,则从尾部开始截取 lenght + start0
end可选。提取片段结尾的后一位,如果为负数,lenght + end字符串的长度

返回值

类型描述
String提取的字符串

实例

'Hello World'.slice(1, 3); // ‘el'
'Hello World'.slice(-3, -1); // ‘rl'

substr()

可在字符串中抽取开始下标的指定数目的字符。
substr的参数指定的是子串的开始位置和长度,因为他可以替代substring和slice的方法。

不改变原字符串 菜鸟教程-字符串charAt

参数

| 参数 | 描述 | 默认 | | --- | --- | | start | 可选。要抽取的子串的起始下表。可以为负数 | 0 | | number | 可选,子串的字符数 | 字符串的长度 |

返回值

类型描述
String新的字符串

实例

'Hello ki'.substr(); // 'Hello ki'
'Hello ki'.substr(1); // 'ello ki'
'Hello ki'.substr(1, 2); // 'el'

substring()

提取字符串中介于两个指定下标之间的字符。
菜鸟教程-字符串charAt

参数

参数描述默认
from可选,非负,提取的第一个字符的位置0 |
to可选,非负,提取的第一个字符的位置字符串长度

实例

'hello ki'.substring(); // 'hello ki'
'hello ki'.substring(0, 2); // 'he'
'hello ki'.substring(6); // 'ki'

toLowerCase()

把字符串转换为小写。
菜鸟教程-字符串charAt

实例

'KI'.toLowerCase(); // 'ki'

toUpperCase()

把字符串转换为大写。
菜鸟教程-字符串charAt

实例

'ki'.toLowerCase(); // 'KI'
String.prototype.toUpperCase(str)

toLocalLowerCase()

根据本地主机的语言环境吧字符串转换为大写。通常与toLowerCase返回结果一样,只有几种语言(如土耳其语)具有地方特有的大小写映射。
菜鸟教程-字符串charAt

返回值

类型描述
String根据本地语言转换小写

实例

'KI'.toLocalUppercase(); // 'ki'

toLocalUpperCase()

根据本地主机的语言环境吧字符串转换为大写。通常与toUpperCase返回结果一样,只有几种语言(如土耳其语)具有地方特有的大小写映射。
菜鸟教程-字符串charAt

返回值

类型描述
String根据本地语言转换大写

实例

'ki'.toLocalUppercase(); // 'KI'

trim()

删除字符串头尾的空白符,空白符包括:空格、制表符tab、换行符等其他空白符等。

不改变原字符串,不适用于 null, undefined, Number类型 菜鸟教程-字符串charAt

返回值

类型描述
String删除头尾空格的字符串

实例

'    ki     '.trim(); // 'ki'

valueOf()

返回String对象的原始值

valueOf通常有JS在后台自动进行调用,而不是显式地出于代码中。
菜鸟教程-字符串charAt

实例

let str = 'hello';
console.log(str.valueOf()); // 'hello'

toString()

返回一个表示String对象的值。
菜鸟教程-字符串charAt

返回值

类型描述
String字符串

实例

let str = new String(123);
const str1 = str.toString();
console.log(str); // String {'123'} 这是一个对象哟
console.log(str1); // '123' 这是一个字符串