字符串相关方法汇总

208 阅读14分钟

上一篇讲了数组相关的方法,咱们趁热打铁,把字符串方法也整理一下。直接来吧,奥利给!

1、length获取字符串长度

语法:str.length

示例:

let str='this is a string test demo';
let len=str.length;
console.log(len);  //26

作用:获取字符串的长度。其实length应该是字符串的一个属性,因为经常用到,所以我们这里把它放在方法一起说一下。

2、charAt()返回指定索引的字符

语法:str.charAt(index)

示例:

let str='this is a string test demo';
let res=str.charAt(3);
console.log(res);  //s

作用:charAt() 方法可返回指定位置(参数指定的索引)的字符。

3、endsWith()判断是否以给定字符串结尾

语法:str.endsWith(searchString, length)


示例:

let str='this is a string test demo';
let res=str.endsWith('demo');
console.log(res);  //true

作用:str.endsWith()确定一个字符串是否在另一个字符串的末尾。若在则返回true,否则返回false。这个方法是大小写敏感的。

4、includes()判断字符串中是否包含指定字符串

语法:str.includes(searchString, position)

示例:

let str='this is a string test demo';
let res1=str.includes('this');//从头开始查找
let res2=str.includes('this',6);//从索引为6的位置开始查找
console.log(res1);  //true
console.log(res2);  //false

作用:includes() 方法用于判断一个字符串是否包含在另一个字符串中,若包含则返回 true ,否则返回false。这个方法是大小写敏感的。

5、indexOf()返回指定值第一次出现的索引

语法:str.indexOf(searchValue , fromIndex)


示例:

let str='this is a string test demo';
let res1=str.indexOf('this');//从头开始查找
let res2=str.indexOf('this',6);//从索引为6的位置开始查找
console.log(res1);  //0
console.log(res2);  //-1

作用:indexOf() 方法返回第一次出现指定值的索引,从 fromIndex 处进行搜索。如果未找到该值,则返回 -1。

6、lastIndexOf()返回从结尾开始指定值第一次出现的索引

语法:str.lastIndexOf(searchValue, fromIndex)


示例:

let str='this is a string test demo';
let res1=str.lastIndexOf('demo');//从结尾开始查找
let res2=str.lastIndexOf('demo',6);//从索引为6的位置开始查找
console.log(res1);  //22
console.log(res2);  //-1

作用:lastIndexOf() 方法返回指定值最后一次出现的索引,在一个字符串中的指定位置 fromIndex处从后向前搜索。如果没找到这个特定值则返回-1 。

7、match()返回字符串匹配正则表达式的结果

语法:str.match(regexp)


示例:

let str='this is a string test demo';
let res=str.match(/demo/);
console.log(res);  
/*返回结果:
[
	0: "demo"
	groups: undefined
	index: 22
	input: "this is a string test demo"
]
*/
let res2=str.match(/i/g);
console.log(res2);  //["i", "i", "i"]

作用: match() 方法检索返回一个字符串匹配正则表达式的的结果。

注意:如果使用g标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。 如果未使用g标志,则仅返回第一个完整匹配及其相关的捕获组(Array)。 在这种情况下,返回的项目将具有如下所述的其他属性:


8、matchAll()返回包含所有匹配正则表达式结果及分组捕获组的迭代器

语法:str.matchAll(regexp)


示例:

let str='this is a string test demo';
let res=str.matchAll(/i/g);
for(let i of res){
	console.log(i);
}
/*
打印结果如下:
["i", index: 2, input: "this is a string test demo", groups: undefined]
["i", index: 5, input: "this is a string test demo", groups: undefined]
["i", index: 13, input: "this is a string test demo", groups: undefined]
*/

作用:matchAll() 方法返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器,可配合 for...of方法进行遍历。

注意:matchAll()方法中的正则表达式需使用 /g 标志。

9、search()返回首次匹配到正则表达式的索引

语法:str.search(regexp)


示例:

let str='this is a string test demo';
let res=str.search(/i/);
console.log(res); //2

作用:search() 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1。

10、startsWith()判断是否以给定的子字符串开头

语法:str.startsWith(searchString,position)


示例:

let str='this is a string test demo';
let res=str.startsWith('this');
console.log(res); //true

作用:startsWith() 方法用来判断当前字符串是否以另外一个给定的子字符串开头,并根据判断结果返回 true 或 false。

11、toString()返回一个表示调用对象的字符串

语法:str.toString()

示例:

let str='this is a string test demo';
let res=str.toString();
console.log(res); //this is a string test demo

作用:toString() 方法返回指定对象的字符串形式。

12、valueOf()返回String对象的原始值

语法:str.valueOf()

示例:

let str='this is a string test demo';
let res=str.valueOf();
console.log(res); //this is a string test demo

作用:valueOf()方法返回一个String对象的原始值。该值等同于tring.prototype.toString()。该方法通常在 JavaScript 内部被调用,而不是在代码里显示调用。

13、[Symbol.iterator]()返回迭代器对象

语法:str[Symbol.iterator]()

示例:

let str='abcd';
let str1=str[Symbol.iterator]();
for(let i of str1){
	console.log(i)
}
//a
//b
//c
//d

作用:[Symbol.iterator]()方法返回一个新的迭代器对象,它遍历字符串的代码点,返回每一个代码点的字符串值。返回的迭代器对象可配合for···of进行遍历。

14、String.raw()返回给定模板字符串的原始字符串

语法:String.raw(callSite, ...substitutions)String.raw`templateString`


示例:

let str='abcd';
let res=String.raw`${str}efg`
console.log(res);  //abcdefg

let res1=String.raw({raw:'abc'},1,2)
console.log(res1); //a1b2c

let res2=String.raw({raw:'abc'},1,2,3,4,5)
console.log(res2); //a1b2c  多余的参数被裁减掉了

作用:String.raw()返回给定模板字符串的原始字符串,这是唯一一个内置的模板字符串标签函数。

15、trim()去掉字符串两端的空白

语法:str.trim()

示例:

let str='   abcd  ';
let res=str.trim();
console.log(res);  //abcd
console.log(str)   //   abcd  

作用:trim() 方法返回一个从两头去掉空白字符的字符串,并不改变原字符串本身。

16、trimEnd()/trimRight()去掉字符串末(右)端空白

语法:str.trimEnd()/str.trimRight()

示例:

let str='   abcd  ';
let res=str.trimRight();
console.log(res);  //   abcd
console.log(str)   //   abcd  

作用:trimEnd() / trimRight()方法移除原字符串右端的连续空白符并返回,该方法并不会直接修改原字符串本身。 

17、trimStart()/trimLeft()去掉字符串开头(左)端空白

语法:str.trimStart()/str.trimLeft()

示例:

let str='   abcd  ';
let res=str.trimLeft();
console.log(res);  //abcd  
console.log(str)   //   abcd  

作用:trimStart() / trimLeft()方法移除原字符串左端的连续空白符并返回,该方法并不会直接修改原字符串本身。

18、split()用指定的分隔符将字符串分割成数组

语法:str.split(separator, limit) 两个参数都是可选的


示例:

let str='abcd';
let res=str.split('');
console.log(res);  //["a", "b", "c", "d"]
console.log(str)   //abcd  

作用:split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。 该方法不改变原字符串。

注意:如果没有找到或者省略了分隔符,则该数组包含一个由整个字符串组成的元素。如果分隔符为空字符串,则将str转换为字符数组。如果字符串仅由一个分隔符实例组成,则该数组由两个空字符串组成。  

19、slice()提取字符串的一部分

语法:str.slice(beginIndex, endIndex)


示例:

let str='abcd';
let res=str.slice(1,3);
console.log(res);  //bc
console.log(str)   //abcd 

作用:从原str中返回beagin索引到end(不包含)索引(默认到尾部)的新字符串。该方法不改变原字符串。

20、padEnd()用一个字符串填充当前字符串(从尾部开始)

语法:str.padEnd(targetLength , padString)


示例:

let str='abcd';
let res1=str.padEnd(7,'zzz');
console.log(res1);  //abcdzzz
console.log(str)   //abcd  

let res2=str.padEnd(3,'zzz');
console.log(res2);  //abcd

let res3=str.padEnd(7,'zzzzzz');
console.log(res3);  //abcdzzz

作用:padEnd() 方法会用一个字符串填充当前字符串(如果需要的话则重复填充),返回填充后达到指定长度的字符串。从当前字符串的末尾(右侧)开始填充。该方法不改变原字符串。

21、padStart()用一个字符串填充当前字符串(从头部开始)

语法:str.padStart(targetLength , padString)


示例:

let str='abcd';
let res1=str.padStart(7,'zzz');
console.log(res1);  //zzzabcd
console.log(str)   //abcd  

let res2=str.padStart(3,'zzz');
console.log(res2);  //abcd

let res3=str.padStart(7,'zzzzzz');
console.log(res3);  //zzzabcd

作用:padStart() 方法用另一个字符串填充当前字符串(如果需要的话则重复填充),以便产生的字符串达到给定的长度。从当前字符串的开始(左侧)填充。该方法不改变原字符串。

22、repeat()重复字符串指定次

语法:str.repeat(count)

示例:

let str='abcd';
let res=str.repeat(2);
console.log(res);  //abcdabcd
console.log(str)   //abcd  

作用:将字符串重复指定次并返回。该方法不改变原字符串。

23、replace() 替换字符串的某些内容

语法:str.replace(regexp|substr, newSubStr|function)


示例:

let str='abcd';
let res=str.replace('ab','22');
console.log(res);  //22cd
let res1=str.replace('ab',function(){
	return 1;
})
console.log(res1);  //1cd
console.log(str)   //abcd  

作用:replace() 方法返回一个由替换值(replacement)替换一些或所有匹配的pattern后的新字符串。pattern可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。 该方法不改变原字符串。

24、localeCompare() 判断参考字符串在排序顺序前或后或与给定字符串相同

语法:referenceStr.localeCompare(compareString, locales, options)

参数:

compareString
用来比较的字符串
locales
可选。 用来表示一种或多种语言或区域的一个符合 BCP 47 标准的字符串或一个字符串数组。 locales参数的一般形式与解释, 详情请参考 Intl page。 下列的 Unicode 扩展关键词是允许的:
co
为了某些地域多样的排序规则。可能的值包括: "big5han", "dict", "direct", "ducet", "gb2312", "phonebk", "phonetic", "pinyin", "reformed", "searchjl", "stroke", "trad", "unihan""standard""search" 这两个值是被忽略的; 它们被 options 的属性 usage 代替(往下看)。
kn
指定数值排序是否应该被使用, 像是这样 "1" < "2" < "10"。 可能的值是 "true""false"。 这个选项能被通过options 属性设置或通过 Unicode 扩展。 假如两个都被设置了, 则 options 优先。("language-region-u-kn-true|false")
kf
指定是否优先对大写字母或小写字母排序。 可能的值有 "upper", "lower", 或 "false" (use the locale's default)。这个选项能被通过options 属性设置或通过 Unicode 扩展。假如两个都被设置了, 则 options 优先。("language-region-u-kf-upper|lower|false")
options

可选。 支持下列的一些或全部属性的一个对象:

localeMatcher
地域匹配算法的使用. 可能的值是 "lookup""best fit"; 默认的值是 "best fit"。更多相关的资料, 请参考 Intl page.
usage
指定比较的目标是排序或者是搜索. 可能的值是 "sort""search"; 默认是 "sort".
sensitivity

指定排序程序的敏感度(Which differences in the strings should lead to non-zero result values.) 可能的有:

  • "base": 只有不同的字母字符串比较是不相等的. 举个例子: a ≠ b, a = á, a = A.
  • "accent": 只有不同的字母或读音比较是不相等的. 举个例子: a ≠ b, a ≠ á, a = A.
  • "case": 只有不同的字母或大小写比较是不相等的. 举个例子: a ≠ b, a = á, a ≠ A.
  • "variant": 不同的字母或读音及其它有区别的标志或大小写都是不相等的, 还有其它的差异可能也会考虑到. 举个例子: a ≠ b, a ≠ á, a ≠ A.

The default is "variant" for usage "sort"; it's locale dependent for usage "search".

ignorePunctuation
指定是否忽略标点. 可能的值是 true and false; 默认为 false.
numeric
是否指定使用数字排序, 像这样 "1" < "2" < "10". 可能的值是 truefalse; 默认为 false. 这个选项能被通过options 属性设置或通过 Unicode 扩展。假如两个都被设置了, 则 options 优先。 实现不用必须支持这个属性.
caseFirst
指定大小写有限排序. 可能的值有 "upper", "lower", or "false" (use the locale's default); 默认为 "false". 这个选项能被通过options 属性设置或通过 Unicode 扩展。假如两个都被设置了, 则 options 优先。 实现不用必须支持这个属性.

示例:

let res='a'.localeCompare('c'); 
console.log(res);  //-1

作用:返回一个数字表示是否 引用字符串 在排序中位于 比较字符串 的前面,后面,或者二者相同。如果引用字符存在于比较字符之前则为负数; 如果引用字符存在于比较字符之后则为正数; 相等的时候返回 0。

25、concat()将指定字符串与原字符串拼接

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

示例:

let str='aabbcc'
let res=str.concat('dd','ee','ff');
console.log(res);  //'aabbccddeeff'

作用:concat()方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。 concat 方法并不改变原字符串。

26、substring()返回指定索引之间的字符

语法:str.substring(indexStart, indexEnd)


示例:

let str='aabbcc'
let res=str.substring(1,5);
console.log(res);  //'abbc'

作用:substring 提取从 indexStart 到 indexEnd(不包括)之间的字符。该方法不改变原字符串。

注意: 如果 indexStart 等于 indexEnd,substring 返回一个空字符串;如果省略 indexEnd,substring 提取字符一直到字符串末尾;如果任一参数小于 0 或为 NaN,则被当作 0。 如果任一参数大于 stringName.length,则被当作 stringName.length。 如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样。

27、substr() 返回字符串中从指定位置开始的指定个数的字符

语法:str.substr(start, length)


示例:

let str='aabbcc'
let res=str.substr(1,5);
console.log(res);  //'abbcc'

作用:substr() 方法返回一个字符串中从指定位置开始到指定字符数的字符。该方法不改变原字符串。

注意:substr() 并非JavaScript核心语言的一部分,未来将可能会被移除掉。如果可以的话,使用 substring() 替代它。

28、toLocaleLowerCase()将字符串转换为小写(根据指定区域语言环境设置的大小写映射)

语法:str.toLocaleLowerCase(locale, locale, ...)


示例:

let str='AABBCC'
let res=str.toLocaleLowerCase();
console.log(res);  //'aabbcc'

作用:toLocaleLowerCase()方法根据任何指定区域语言环境设置的大小写映射,返回调用字符串被转换为小写的格式。

29、toLocaleUpperCase()将字符串转换为大写(根据指定区域语言环境设置的大小写映射)

语法:str.toLocaleUpperCase(locale, locale, ...)


示例:

let str='aabbcc'
let res=str.toLocaleUpperCase();
console.log(res);  //'AABBCC'

作用:toLocaleUpperCase()方法根据任何指定区域语言环境设置的大写映射,返回调用字符串被转换为小写的格式。

30、toLowerCase()将字符串转换为小写

语法:str.toLowerCase()

示例:

let str='AABBCC'
let res=str.toLowerCase();
console.log(res);  //'aabbcc'

作用:toLowerCase() 会将调用该方法的字符串值转为小写形式,并返回。

31、toUpperCase()将字符串转换为大写

语法:str.toUpperCase()

示例:

let str='aabbcc'
let res=str.toUpperCase();
console.log(res);  //'AABBCC'

作用:toUpperCase() 会将调用该方法的字符串值转为大写形式,并返回。

32、String.fromCharCode()返回指定UTF-16代码单元序列创建的字符串

语法:String.fromCharCode(num1, ..., numN)

示例:

let res=String.fromCharCode(65, 66, 67);
console.log(res);  //'ABC'

作用:String.fromCharCode() 方法返回由指定的UTF-16代码单元序列创建的字符串。由于 fromCharCode() 是 String 的静态方法,所以应该像这样使用:String.fromCharCode(),而不是作为你创建的 String 对象的方法。

33、String.fromCodePoint()返回指定Unicode 代码序列创建的字符串

语法:String.fromCodePoint(num1, ..., numN)

示例:

let res=String.fromCodePoint(65, 90);
console.log(res);  //'AZ'

作用:String.fromCodePoint() 方法返回由指定的UTF-16代码单元序列创建的字符串。因为 fromCodePoint() 是 String 的一个静态方法,所以只能通过 String.fromCodePoint() 这样的方式来使用,不能在你创建的 String 对象实例上直接调用。

34、charCodeAt()返回给定索引位置字符的UTF-16编码

语法:str.charCodeAt(index)

示例:

let str='AABBCC'
let res=str.charCodeAt(1);
console.log(res);  //65

作用:charCodeAt()方法返回给定索引位置字符的UTF-16编码,索引超过length-1则返回NaN。

35、codePointAt()返回给定索引位置字符的 Unicode 编码

语法:str.codePointAt(pos)

示例:

let str='AABBCC'
let res=str.codePointAt(1);
console.log(res);  //65

作用:codePointAt()方法返回给定索引位置字符的Unicode 编码,如果在索引处没找到元素则返回 undefined 。

36、normalize()返回给定的 Unicode 规范化形式的字符串

语法:str.normalize(form)


示例:

let str='AABBCC'
let res=str.normalize();
console.log(res);  //AABBCC

作用:normalize() 方法会按照指定的一种 Unicode 正规形式将当前字符串正规化。(如果该值不是字符串,则首先将其转换为一个字符串)。

结语

完结,撒花~~~还有一些字符串方法已废弃,这里就不说啦,如果有遗漏的地方,欢迎大家补充!!!