JavaScript 字符串方法
基本字符串方法
JavaScript 字符串是原始类型且不可变的:所有字符串方法都会生成一个新字符串,而不会改变原始字符串。
JavaScript 字符串长度
length
属性返回字符串的长度
提取字符串字符
有 4 种方法可以提取字符串字符
at(position)
方法charAt(position)
方法charCodeAt(position)
方法- 使用属性访问 [],就像在数组中一样
JavaScript String charAt()
charAt()
方法在字符串中返回指定索引(位置)处的字符
JavaScript String charCodeAt()
charCodeAt()
方法在字符串中返回指定索引处的字符代码
该方法返回一个 UTF-16 码(0 到 65535 之间的整数)。
JavaScript String at() 方法
ES2022 引入了字符串方法 at()
示例
获取名字的第三个字母
const name = "W3Schools";
let letter = name.at(2);
自己动手试一试 »
获取名字的第三个字母
const name = "W3Schools";
let letter = name[2];
自己动手试一试 »
at()
方法在字符串中返回指定索引(位置)处的字符。
at()
方法自 2022 年 3 月起在所有现代浏览器中受支持
注意
at()
方法是 JavaScript 的新增功能。
它允许使用负索引,而 charAt()
不允许。
myString.at(-2)
而不是 charAt(myString.length-2)
。浏览器支持
at()
是 ES2022 功能。
JavaScript 2022 (ES2022) 自 2023 年 3 月起在所有现代浏览器中均受支持
Chrome 94 | Edge 94 | Firefox 93 | Safari 16.4 | Opera 79 |
2021 年 9 月 | 2021 年 9 月 | 2021 年 10 月 | 2023 年 3 月 | 2021 年 10 月 |
属性访问 [ ]
注意
属性访问可能有点**不可预测:**
- 它使字符串看起来像数组(但它们不是)
- 如果未找到字符,[ ] 返回 undefined,而 charAt() 返回一个空字符串。
- 它是只读的。str[0] = "A" 不会报错(但无效!)
提取字符串部分
有 3 种方法可以提取字符串的一部分
slice(start, end)
substring(start, end)
substr(start, length)
JavaScript String slice()
slice()
提取字符串的一部分,并以新字符串形式返回提取的部分。
该方法接受 2 个参数:起始位置和结束位置(不包含结束位置)。
注意
JavaScript 从零开始计算位置。
第一个位置是 0。
第二个位置是 1。
示例
如果省略第二个参数,该方法将提取字符串的其余部分
let text = "Apple, Banana, Kiwi";
let part = text.slice(7);
自己动手试一试 »
如果参数为负数,则位置从字符串末尾开始计算
let text = "Apple, Banana, Kiwi";
let part = text.slice(-12);
自己动手试一试 »
此示例从位置 -12 到位置 -6 提取字符串的一部分
let text = "Apple, Banana, Kiwi";
let part = text.slice(-12, -6);
自己动手试一试 »
JavaScript String substring()
substring()
类似于 slice()
。
区别在于 substring()
将小于 0 的起始值和结束值视为 0。
如果省略第二个参数,substring()
将提取字符串的其余部分。
JavaScript String substr()
substr()
类似于 slice()
。
区别在于第二个参数指定了提取部分的长度。
如果省略第二个参数,substr()
将提取字符串的其余部分。
如果第一个参数为负数,则位置从字符串末尾开始计数。
转换为大写和小写
使用 toUpperCase()
将字符串转换为大写
使用 toLowerCase()
将字符串转换为小写
JavaScript String toUpperCase()
JavaScript String toLowerCase()
示例
let text1 = "Hello World!"; // 字符串
let text2 = text1.toLowerCase(); // text2 是 text1 转换为小写的结果
自己动手试一试 »
JavaScript String concat()
concat()
连接两个或多个字符串
concat()
方法可以代替加号运算符使用。这两行效果相同
示例
text = "Hello" + " " + "World!";
text = "Hello".concat(" ", "World!");
注意
所有字符串方法都返回一个新字符串。它们不会修改原始字符串。
形式上讲
字符串是不可变的:字符串不能被更改,只能被替换。
JavaScript String trim()
trim()
方法删除字符串两端的空白字符
JavaScript 字符串 trimStart() 方法
ECMAScript 2019 将字符串方法 trimStart()
添加到了 JavaScript 中。
trimStart()
方法的工作方式类似于 trim()
,但只删除字符串开头的空格。
JavaScript String trimStart()
自 2020 年 1 月起在所有现代浏览器中均受支持
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
2018 年 4 月 | 2020 年 1 月 | 2018 年 6 月 | 2018 年 9 月 | 2018 年 5 月 |
JavaScript 字符串 trimEnd() 方法
ECMAScript 2019 将字符串方法 trimEnd()
添加到了 JavaScript 中。
trimEnd()
方法类似于 trim()
,但仅移除字符串末尾的空格。
JavaScript String trimEnd()
自 2020 年 1 月起在所有现代浏览器中均受支持
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
2018 年 4 月 | 2020 年 1 月 | 2018 年 6 月 | 2018 年 9 月 | 2018 年 5 月 |
JavaScript 字符串填充
ECMAScript 2017 向 JavaScript 添加了两个新的字符串方法:padStart()
和 padEnd()
,用于支持在字符串的开头和结尾进行填充。
JavaScript String padStart()
padStart()
方法从开头填充字符串。
它用另一个字符串(多次)填充一个字符串,直到达到指定的长度。
示例
用 "0" 填充字符串,直到长度达到 4
let text = "5";
let padded = text.padStart(4,"0");
自己动手试一试 »
用 "x" 填充字符串,直到长度达到 4
let text = "5";
let padded = text.padStart(4,"x");
自己动手试一试 »
注意
padStart()
方法是一个字符串方法。
要填充数字,请先将其转换为字符串。
请参见下面的示例。
浏览器支持
padStart()
是 ECMAScript 2017 功能。
自 2017 年 9 月起,所有现代浏览器都支持 ES2017
Chrome 58 | Edge 15 | Firefox 52 | Safari 11 | Opera 45 |
2017 年 4 月 | 2017 年 4 月 | 2017 年 3 月 | 2017 年 9 月 | 2017 年 5 月 |
Internet Explorer 不支持 padStart()
。
JavaScript String padEnd()
padEnd()
方法从末尾填充字符串。
它用另一个字符串(多次)填充一个字符串,直到达到指定的长度。
示例
let text = "5";
let padded = text.padEnd(4,"0");
自己动手试一试 »
let text = "5";
let padded = text.padEnd(4,"x");
自己动手试一试 »
注意
padEnd()
方法是一个字符串方法。
要填充数字,请先将其转换为字符串。
请参见下面的示例。
浏览器支持
padEnd()
是 ECMAScript 2017 功能。
自 2017 年 9 月起,所有现代浏览器都支持 ES2017
Chrome 58 | Edge 15 | Firefox 52 | Safari 11 | Opera 45 |
2017 年 4 月 | 2017 年 4 月 | 2017 年 3 月 | 2017 年 9 月 | 2017 年 5 月 |
Internet Explorer 不支持 padEnd()
。
JavaScript String repeat()
repeat()
方法返回一个包含指定次数字符串副本的字符串。
repeat()
方法返回一个新字符串。
repeat()
方法不更改原始字符串。
示例
创建文本副本
let text = "Hello world!";
let result = text.repeat(2);
自己动手试一试 »
let text = "Hello world!";
let result = text.repeat(4);
自己动手试一试 »
语法
string.repeat(count)
参数
参数 | 描述 |
count | 必需。 想要的副本数量。 |
返回值
类型 | 描述 |
字符串 | 包含副本的新字符串。 |
浏览器支持
repeat()
是 ES6 功能(JavaScript 2015)。
自 2017 年 6 月起,所有现代浏览器都完全支持 ES6
Chrome 51 | Edge 15 | Firefox 54 | Safari 10 | Opera 38 |
2016 年 5 月 | 2017 年 4 月 | 2017 年 6 月 | 2016 年 9 月 | 2016 年 6 月 |
Internet Explorer 不支持 repeat()
。
替换字符串内容
replace()
方法在字符串中将指定值替换为另一个值
示例
let text = "Please visit Microsoft!";
let newText = text.replace("Microsoft", "W3Schools");
自己动手试一试 »
注意
replace()
方法不会更改调用它的字符串。
replace()
方法返回一个新字符串。
replace()
方法仅替换**第一个**匹配项
如果要替换所有匹配项,请使用带有 /g 标志的正则表达式。请参阅下面的示例。
默认情况下,replace()
方法仅替换**第一个**匹配项
示例
let text = "Please visit Microsoft and Microsoft!";
let newText = text.replace("Microsoft", "W3Schools");
默认情况下,replace()
方法区分大小写。书写 MICROSOFT(大写)将不起作用
示例
let text = "Please visit Microsoft!";
let newText = text.replace("MICROSOFT", "W3Schools");
要实现不区分大小写替换,请使用带有 /i 标志(不区分大小写)的**正则表达式**
示例
let text = "Please visit Microsoft!";
let newText = text.replace(/MICROSOFT/i, "W3Schools");
注意
正则表达式写时无需引号。
要替换所有匹配项,请使用带有 /g 标志(全局匹配)的**正则表达式**
示例
let text = "Please visit Microsoft and Microsoft!";
let newText = text.replace(/Microsoft/g, "W3Schools");
注意
您将在 JavaScript 正则表达式章节中学到更多关于正则表达式的知识。
JavaScript String ReplaceAll()
在 2021 年,JavaScript 引入了字符串方法 replaceAll()
replaceAll()
方法允许您指定一个正则表达式而不是要替换的字符串。
如果参数是正则表达式,则必须设置全局标志 (g),否则会抛出 TypeError。
将字符串转换为数组
如果您想将字符串作为数组处理,可以将其转换为数组。
JavaScript String split()
可以使用 split()
方法将字符串转换为数组
如果省略分隔符,返回的数组将在索引 [0] 中包含整个字符串。
如果分隔符是 "",返回的数组将是单个字符的数组