length属性
每个 String 对象都有一个 length 属性,表示字符串中字符的数量:
let str = "hello";
str.length; // 5
charAt()
charAt()方法返回给定索引位置的字符,由传给方法的整数参数指定:
let str = "hello";
str.charAt(0); // "h"
str.charAt(1); // "e"
charCodeAt()
使用 charCodeAt()方法可以查看指定码元的字符编码,索引以整数指定:
let str = "abcde";
str.charCodeAt(0); // 97
fromCharCode()
fromCharCode()方法用于根据给定的 UTF-16 码元创建字符串中的字符。这个方法可以接受任意
多个数值,并返回将所有数值对应的字符拼接起来的字符串:
String.fromCharCode(97, 98, 99);// "abc
concat()
用于将一个或多个字符串拼接成一个新字符串:
let str = "abc";
str.concat("d", "e", "fg"); // abcdefg
// str的值不变,还是abc
虽然 concat()方法可以拼接字符串,但更常用的方式是使用加号操作符(+)。
slice()、substring()、substr()
这3个方法都返回调用它们的字符串的一个子字符串,而且都接收一或两个参数。
对 slice()和 substring()而言,第二个参数是提取结
束的位置(即该位置之前的字符会被提取出来,不包含结束位置的字符)。对 substr()而言,第二个参数表示返回的子字符串数量。
任何情况下,省略第二个参数都意味着提取到字符串末尾。与 concat()方法一样,slice()、substr()和 substring()也不会修改调用它们的字符串,而只会返回提取到的原始新字符串值:
// 只有一个参数
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。
// 一个参数, 为负数
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()方法从字符串末尾开始查找子字符串:
let str = "hello world";
str.indexOf("o"); // 4
str.lastIndexOf("o"); // 7
这两个方法都可以接收可选的第二个参数,表示开始搜索的位置。这意味着,indexOf()会从这个参数指定的位置开始向字符串末尾搜索,忽略该位置之前的字符;lastIndexOf()则会从这个参数指定的位置开始向字符串开头搜索,忽略该位置之后直到字符串末尾的字符:
let str = "hello world";
str.indexOf("o", 6); // 7
str.lastIndexOf("o", 6); // 4
startsWith()、endsWith()
startsWith()检查字符串开头的匹配项;endsWith()检查字符串末尾的匹配项:
let str = "abcde";
str.startsWith("abc"); // true
str.endsWith("de"); // true
startsWith()方法接收可选的第二个参数,表示开始搜索的位置。如果传入第二个参数,则意味着这两个方法会从指定位置向着字符串末尾搜索,忽略该位置之前的所有字符;
endsWith()方法接收可选的第二个参数,表示应该当作字符串末尾的位置。如果不提供这个参数,
那么默认就是字符串长度;
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()删除字符串前、后所有空格符(中间的不删除),再返回结果(不会改变原字符串):
let str = " abc de ";
str.trim(); // "abc de" str不变还是" abc de "
repeat()
这个方法接收一个整数参数,表示要将字符串复制多少次,原字符串不变:
let str = "abc";
str.repeat(3); // "abcabcabc"
toUpperCase()、toLowerCase()
toUpperCase(): 将字符串全部转换为大写;
toLowerCase(): 将字符串全部转换为小写;
let str = "aBcdE";
str.toUpperCase(); // "ABCDE"
str.toLowerCase(); // "abcde"
字符串匹配方法: match() 、search()
match()方法接收一个参数,可以是一个正则表达式字符串,也可以是一个 RegExp 对象:
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()始终从字符串开头向后匹配模式:
let text = "cat, bat, sat, fat";
let pos = text.search(/at/);
pos; // 1
//这里,search(/at/)返回 1,即"at"的第一个字符在字符串中的位置
replace()
这个方法接收两个参数,第一个参数可以是一个 RegExp 对象或一个字符串(这个字符串不会转换为正则表达式),第二个参数可以是一个字符串或一个函数。如果第一个参数是字符串,那么只会替换第一个子字符串。要想替换所有子字符串,第一个参数必须为正则表达式并且带全局标记:
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 对象。(字符串分隔符不会被这个方法当成正则表达式。)还可以传入第二个参数,即数组大小,确保返回的数组不会超过指定大小:
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 删除。