前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >js string字符串常用方法

js string字符串常用方法

原创
作者头像
IT工作者
发布2022-05-13 09:14:22
2.3K0
发布2022-05-13 09:14:22
举报
文章被收录于专栏:程序技术知识

length属性

每个 String 对象都有一个 length 属性,表示字符串中字符的数量:

代码语言:javascript
复制
let str = "hello";
str.length; // 5

charAt()

charAt()方法返回给定索引位置的字符,由传给方法的整数参数指定:

代码语言:javascript
复制
let str = "hello";
str.charAt(0); // "h"
str.charAt(1); // "e"

charCodeAt()

使用 charCodeAt()方法可以查看指定码元的字符编码,索引以整数指定:

代码语言:javascript
复制
let str = "abcde";
str.charCodeAt(0); // 97

fromCharCode()

fromCharCode()方法用于根据给定的 UTF-16 码元创建字符串中的字符。这个方法可以接受任意

多个数值,并返回将所有数值对应的字符拼接起来的字符串:

String.fromCharCode(97, 98, 99);// "abc

concat()

用于将一个或多个字符串拼接成一个新字符串:

代码语言:javascript
复制
let str = "abc";
str.concat("d", "e", "fg"); // abcdefg
// str的值不变,还是abc

虽然 concat()方法可以拼接字符串,但更常用的方式是使用加号操作符(+)。

slice()、substring()、substr()

这3个方法都返回调用它们的字符串的一个子字符串,而且都接收一或两个参数。

对 slice()和 substring()而言,第二个参数是提取结

束的位置(即该位置之前的字符会被提取出来,不包含结束位置的字符)。对 substr()而言,第二个参数表示返回的子字符串数量。

任何情况下,省略第二个参数都意味着提取到字符串末尾。与 concat()方法一样,slice()、substr()和 substring()也不会修改调用它们的字符串,而只会返回提取到的原始新字符串值:

代码语言:javascript
复制
// 只有一个参数
let str = "hello";
str.slice(3); // "lo"
str.substring(3); // "lo"
str.substr(3); // "lo"

// 两个参数 
str.slice(0, 3); //"hel"
str.substring(0, 3); // "hel"
str.substr(1, 3); // 从1开始,截取三个: "ell"

当某个参数是负值时,这 3 个方法的行为又有不同;

slice(): 将所有负值参数都当成字符串长度加上负参数值(也可以理解为从倒数第几个,-1就是倒数第一个字符);

substring(): 会将所有负参数值都转换为 0;

substr(): 会将第二个参数负参数值转换为 0。

代码语言:javascript
复制
// 一个参数, 为负数
let str = "hello world";
str.slice(-3); // 从倒数第三至末尾  "rld"
str.substring(-3); // 转换为0, 从0至末尾 "hello world"
str.substr(-3); // 从倒数第三至末尾  "rld"

// 两个参数
str.slice(3, -4); //  "lo w" 
str.substring(3, -4); 
// ** 这里substring有个特殊的地方,
//这个方法会将较小的参数作为起点, 虽然-4转换为0,等价于str.substring(0, 3); 结果为"hel" 
str.substr(3, -4); // "" -4 => 0

indexOf()、lastIndexOf()

这两个方法从字符串中搜索传入的字符串,并返回位置(如果没找到,则返回-1),两者的区别在于,indexOf()方法从字符串开头开始查找子字符串,而 lastIndexOf()方法从字符串末尾开始查找子字符串:

代码语言:javascript
复制
let str = "hello world";
str.indexOf("o"); // 4
str.lastIndexOf("o"); // 7

这两个方法都可以接收可选的第二个参数,表示开始搜索的位置。这意味着,indexOf()会从这个参数指定的位置开始向字符串末尾搜索,忽略该位置之前的字符;lastIndexOf()则会从这个参数指定的位置开始向字符串开头搜索,忽略该位置之后直到字符串末尾的字符:

代码语言:javascript
复制
let str = "hello world";
str.indexOf("o", 6); //  7
str.lastIndexOf("o", 6); // 4

startsWith()、endsWith()

startsWith()检查字符串开头的匹配项;endsWith()检查字符串末尾的匹配项:

代码语言:javascript
复制
let str = "abcde";
str.startsWith("abc"); // true
str.endsWith("de"); // true

startsWith()方法接收可选的第二个参数,表示开始搜索的位置。如果传入第二个参数,则意味着这两个方法会从指定位置向着字符串末尾搜索,忽略该位置之前的所有字符;

endsWith()方法接收可选的第二个参数,表示应该当作字符串末尾的位置。如果不提供这个参数,

那么默认就是字符串长度;

代码语言:javascript
复制
let str = "abcde";
str.startsWith("bcd", 1); // true
str.endsWith("bc", 3); // true 等价于str => abc

includes()
includes()检查整个字符串是否包含,includes()方法接收可选的第二个参数,表示开始搜索的位置:
let str = "abcde";
str.includes("bc"); // true
str.includes("de", 2);// true

trim()

trim()删除字符串前、后所有空格符(中间的不删除),再返回结果(不会改变原字符串):

代码语言:javascript
复制
let str = "  abc  de  ";
str.trim(); // "abc  de"   str不变还是"  abc  de  "

repeat()

这个方法接收一个整数参数,表示要将字符串复制多少次,原字符串不变:

代码语言:javascript
复制
let str = "abc";
str.repeat(3); // "abcabcabc"

toUpperCase()、toLowerCase()
toUpperCase(): 将字符串全部转换为大写;
toLowerCase(): 将字符串全部转换为小写;
let str = "aBcdE";
str.toUpperCase(); // "ABCDE"
str.toLowerCase(); // "abcde"

字符串匹配方法: match() 、search()

match()方法接收一个参数,可以是一个正则表达式字符串,也可以是一个 RegExp 对象:

代码语言:javascript
复制
let text = "cat, bat, sat, fat"; 
let pattern = /.at/; 
let matches = text.match(pattern); 
matches.index; // 0 
matches[0]; // "cat" 
pattern.lastIndex; // 0 

match()方法返回的数组与 RegExp 对象的 exec()方法返回的数组是一样的:第一个元素是与整

个模式匹配的字符串,其余元素则是与表达式中的捕获组匹配的字符串(如果有的话)。

search()方法唯一的参数与 match()方法一样:正则表达式字符串或 RegExp 对象。这个方法返回模式第一个匹配的位置索引,如果没找到则返回-1。search()始终从字符串开头向后匹配模式:

代码语言:javascript
复制
let text = "cat, bat, sat, fat"; 
let pos = text.search(/at/); 
pos; // 1 
//这里,search(/at/)返回 1,即"at"的第一个字符在字符串中的位置

replace()

这个方法接收两个参数,第一个参数可以是一个 RegExp 对象或一个字符串(这个字符串不会转换为正则表达式),第二个参数可以是一个字符串或一个函数。如果第一个参数是字符串,那么只会替换第一个子字符串。要想替换所有子字符串,第一个参数必须为正则表达式并且带全局标记:

代码语言:javascript
复制
let text = "cat, bat, sat, fat"; 
let result = text.replace("at", "ond"); 
console.log(result); // "cond, bat, sat, fat" 
result = text.replace(/at/g, "ond"); 
console.log(result); // "cond, bond, sond, fond" 

split()

这个方法会根据传入的分隔符将字符串拆分成数组。作为分隔符的参数可以是字符串,也可以是 RegExp 对象。(字符串分隔符不会被这个方法当成正则表达式。)还可以传入第二个参数,即数组大小,确保返回的数组不会超过指定大小:

代码语言:javascript
复制
let colorText = "red,blue,green,yellow"; 
let colors1 = colorText.split(","); // ["red", "blue", "green", "yellow"] 
let colors2 = colorText.split(",", 2); // ["red", "blue"] 
let colors3 = colorText.split(/[^,]+/); // ["", ",", ",", ",", ""] 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档