|
|
发表于 2025-12-25 09:23:56
|
查看: 33 |
回复: 0
在JavaScript中,字符串是一种基础且强大的数据类型,其内置的String对象提供了大量方法,能高效处理文本数据。本文将系统梳理这些核心方法,并配以详尽的分类表格和实用技巧,助你轻松应对日常开发中的字符串处理需求。
一、核心方法速查表
下表汇总了JavaScript String对象的常用方法,方便你快速查阅与调用。
| 方法类别 |
方法名 |
主要用途 |
示例 |
| 查找与判断 |
includes(substr) |
判断字符串是否包含子串,返回布尔值。 |
'Hello'.includes('e') // true |
|
indexOf(substr) |
返回子串首次出现的索引,未找到返回 -1。 |
'Hello'.indexOf('l') // 2 |
|
lastIndexOf(substr) |
返回子串最后一次出现的索引,未找到返回 -1。 |
'Hello'.lastIndexOf('l') // 3 |
|
startsWith(substr) |
判断字符串是否以子串开头,返回布尔值。 |
'Hello'.startsWith('He') // true |
|
endsWith(substr) |
判断字符串是否以子串结尾,返回布尔值。 |
'Hello'.endsWith('lo') // true |
|
search(regexp) |
使用正则表达式搜索,返回首次匹配的索引。 |
'Hello'.search(/[lo]/) // 2 |
|
match(regexp) |
使用正则表达式搜索,返回匹配结果的数组。 |
'Hello'.match(/l/g) // ['l', 'l'] |
| 截取与分割 |
slice(start, end) |
提取子串,支持负数索引(从末尾开始)。 |
'Hello'.slice(1, 4) // 'ell' |
|
substring(start, end) |
提取子串,但不支持负数索引。 |
'Hello'.substring(1, 4) // 'ell' |
|
substr(start, length) |
⚠️ 从起点提取指定长度的子串(已弃用)。 |
'Hello'.substr(1, 3) // 'ell' |
|
split(separator) |
根据分隔符将字符串分割成数组。 |
'a,b,c'.split(',') // ['a','b','c'] |
| 修改与替换 |
replace(searchVal, newVal) |
替换第一个匹配的子串或正则匹配项。 |
'Hi!'.replace('!', '?') // 'Hi?' |
|
replaceAll(searchVal, newVal) |
替换所有匹配的子串。 |
'aabb'.replaceAll('b', 'c') // 'aacc' |
|
concat(str1, str2, ...) |
连接多个字符串,返回新字符串。 |
'Hello'.concat(' ', 'World') // 'Hello World' |
|
repeat(count) |
将字符串重复指定次数后返回新字符串。 |
'Ha'.repeat(3) // 'HaHaHa' |
|
trim() |
去除字符串两端的空白字符。 |
' a '.trim() // 'a' |
|
trimStart()/trimEnd() |
分别去除开头或结尾的空白字符。 |
' a '.trimStart() // 'a ' |
| 大小写转换 |
toLowerCase() |
将字符串转换为小写。 |
'Hello'.toLowerCase() // 'hello' |
|
toUpperCase() |
将字符串转换为大写。 |
'Hello'.toUpperCase() // 'HELLO' |
| 字符与编码 |
charAt(index) |
返回指定位置的字符。 |
'Hello'.charAt(1) // 'e' |
|
charCodeAt(index) |
返回指定位置字符的 UTF-16 编码。 |
'A'.charCodeAt(0) // 65 |
|
String.fromCharCode(num) |
将 UTF-16 编码转换回字符(静态方法)。 |
String.fromCharCode(65) // 'A' |
| 填充与格式化 |
padStart(len, padStr) |
在开头填充字符,直到字符串达到指定长度。 |
'5'.padStart(3, '0') // '005' |
|
padEnd(len, padStr) |
在结尾填充字符,直到字符串达到指定长度。 |
'5'.padEnd(3, '0') // '500' |
二、关键概念与实用技巧
深入理解以下概念,能让你的前端开发代码更加高效和健壮。
-
字符串的不可变性:所有字符串方法都不会改变原字符串,而是返回一个新的字符串。例如:
let s = 'hello';
s.toUpperCase(); // 返回 'HELLO'
console.log(s); // s 的值依然是 'hello'
-
优先使用模板字符串:使用反引号()定义的模板字符串,支持变量插值(${variable}`)和多行文本,是现代JavaScript中字符串拼接和格式化的首选,语法更简洁直观。
-
善用正则表达式:在与 match()、replace()、search()、split() 等方法结合时,正则表达式能实现复杂的模式匹配和文本处理,功能极为强大。
-
性能优化:拼接大量字符串:在循环中需要拼接大量字符串时,使用数组的 join() 方法通常比重复使用 + 运算符性能更好,能有效减少内存开销。
三、常见误区与注意事项
-
slice 与 substring 的核心区别:主要在于对负数和参数顺序的处理。
slice(start, end):start 或 end 为负数时,表示从字符串末尾开始计算位置。
substring(start, end):将所有负参数视为0,并且会自动交换 start 和 end 的位置以确保 start <= end。例如 substring(3, 1) 会被当作 substring(1, 3) 执行。
-
replace 方法的默认行为:replace() 默认只替换第一个匹配项。若要替换全部,必须使用带有全局标志 g 的正则表达式(如 /foo/g)或直接使用 replaceAll() 方法。
-
避免使用已弃用的 substr:substr(start, length) 方法虽然仍被许多环境支持,但已被标记为“遗留函数”,建议在新代码中使用 slice 或 substring 作为替代。
|
上一篇:AI-Mock:开源Chrome扩展实现前端接口模拟与AI生成Mock数据下一篇:TypeScript keyof操作符深度解析:从基础到企业级高级应用
|