前端 JavaScript 字符串常用方法完整指南
本文系统梳理了 JavaScript 中字符串对象的常用方法,涵盖字符查找、拼接、截取、替换、格式化及正则匹配等核心功能。详细解析了 anchor、charAt、concat、slice、replace、match 等方法的参数定义、返回值及边界情况,帮助开发者掌握字符串处理的完整技能树。
1. anchor 生成锚点链接字符串
anchor(name),name:指定 a 标签的 name 属性值
返回包含 name 属性的 a 标签字符串
let str = "yqcoder";
// 不传值
str.anchor(); // '<a name="undefined">yqcoder</a>'
// 创建 name 属性为 web 的 a 标签字符串
str.anchor("web"); // '<a name="web">yqcoder</a>'2. at 依据索引获取字符
at(index?),index:字符串索引,默认为 0
返回指定索引的字符,若索引越界则返回 undefined
let str = "yqcoder";
// 默认返回第 1 个字符
str.at(); // 'y'
// 查找最后 1 个字符
str.at(-1); // 'r'
// 没找到
str.at(100); // undefined3. big 生成大号字体标签字符串
big(),返回包裹在 big 标签内的字符串
let str = "yqcoder";
// 创建 str 大号标签字符串
str.big(); // '<big>yqcoder</big>'4. blink 生成闪烁效果标签字符串
blink(),返回包裹在 blink 标签内的字符串
let str = "yqcoder";
// 创建 str 闪动标签字符串
str.big(); // '<blink>yqcoder</blink>'5. bold 生成粗体标签字符串
bold(),返回包裹在 b 标签内的字符串
let str = "yqcoder";
// 创建 str 粗体标签字符串
str.bold(); // '<b>yqcoder</b>'6. charAt 获取指定索引的字符
charAt(index?),index:字符索引,默认为 0
若找到对应字符则返回,否则返回空字符串 ""。
let str = "yqcoder";
// 默认返回第 1 位字符
str.charAt(); // y
// 返回最后 1 位字符
str.charAt(str.length - 1); // r
// 找不到
str.charAt(100); // ""7. charCodeAt 获取指定索引字符的 Unicode 编码值
charCodeAt(index?),index:字符索引,默认为 0
若找到对应字符则返回编码值,否则返回 NaN。
let str = "yqcoder";
// 默认返回第 1 位字符
str.charCodeAt(); // 121
// 返回最后 1 位字符
str.charCodeAt(str.length - 1); // 114
// 找不到
str.charCodeAt(100); // NAN8. codePointAt 获取指定索引字符的完整 Unicode 编码
codePointAt(index?),index:字符索引,默认为 0
若找到对应字符则返回编码值,否则返回 undefined。
let str = "yqcoder";
// 默认返回第 1 位字符
str.codePointAt(); // 121
// 返回最后 1 位字符
str.codePointAt(str.length - 1); // 114
// 找不到
str.codePointAt(100); // undefined9. concat 拼接多个字符串
concat(arg),arg 可为字符串、数组或多层嵌套数组
返回拼接后的新字符串
let str = "yqcoder";
// 拼接普通字符串
str.concat(" is coder"); // 'yqcoder is coder'
// 拼接字符串数组
str.concat([" is coder", " is a man"]); // 'yqcoder is coder, is a man'
// 拼接多层字符串数组
str.concat([" is coder", [" is a man", [" is a big"]]]); // 'yqcoder is coder, is a man, is a big'
// 拼接多个数组字符串
str.concat([" is coder"], [" is a man"]); // 'yqcoder is coder is a man'10. endsWith 检测字符串是否以指定后缀结尾
endsWith(str, length?),str:目标后缀,length:可选的前缀长度
匹配区分大小写,匹配成功返回 true,否则返回 false
let str = "yqcoder";
// 判断是否coder结尾
str.endsWith("coder"); // true
// 判断是否Coder结尾
str.endsWith("Coder"); // false
// 判断前 6 个字符是否以 coder 结尾
str.endsWith("coder", 6); // false11. fixed 生成等宽字体标签字符串
fixed(),返回包裹在 tt 标签内的字符串
let str = "yqcoder";
// 创建 str <tt>标签字符串
str.fixed(); // '<tt>yqcoder</tt>'12. fontcolor 生成指定颜色的字体标签字符串
fontcolor(color),color:颜色值
返回包裹在 font 标签且带有 color 属性的字符串
let str = "yqcoder";
// 创建color为red的<font>标签字符串
str.fontcolor("red"); // '<font color="red">yqcoder</font>'13. fontsize 生成指定大小的字体标签字符串
fontsize(size),size:字体大小值
返回包裹在 font 标签且带有 size 属性的字符串
let str = "yqcoder";
// 创建size为red的<font>标签字符串
str.fontsize(12); // '<font size="12">yqcoder</font>'14. includes 检测字符串是否包含指定子串
includes(str, start?),str:目标子串,start:可选的起始索引
包含则返回 true,否则返回 false
let str = "yqcoder";
// 判断是否包含 'yq' 字符
str.includes("yq"); // true
// 从下标 1 开始判断是否包含 'yq'
str.includes("yq", 1); // false16. indexOf 查找子串首次出现的索引
indexOf(str, start?),str:目标子串,start:可选的起始索引,默认为 0
若找到则返回索引值,否则返回 -1。
let str = "yqcoder-yqcoder";
// 从下标 0 开始,查找 y 所在位置。
str.indexOf("y"); // 0
// 从下标 2 开始,查找 y 所在位置。
str.indexOf("y", 2); // 817. isWellFormed 检测字符串是否为有效格式
isWellFormed(),返回布尔值。
let str = "yqcoder";
let str1 = "yqcoder\uD800";
// 判断str是否包含单独代理项
str.isWellFormed(); // true
// 判断str1是否包含单独代理项
str1.isWellFormed(); // false18. italics 生成斜体标签字符串
italics(),返回包裹在 i 标签内的字符串
let str = "yqcoder";
// 创建斜体字符串
str.italics(); // '<i>yqcoder</i>'19. lastIndexOf 从后往前查找子串索引
lastIndexOf(str, start?),str:目标子串,start:可选的起始索引,默认为 0
若找到则返回索引值,否则返回 -1。
let str = "yqcoder-yqcoder";
// 从最后 1 开始,查找 y 所在位置。
str.indexOf("y"); // 8
// 从下标 0 开始,查找 y 所在位置。
str.indexOf("y", 0); // 020. link 生成超链接标签字符串
link(url),url:a 标签的 href 属性值
返回包含 href 属性的 a 标签字符串
let str = "yqcoder";
// 不传值
str.link(); // '<a href="undefined" rel="external nofollow" >yqcoder</a>'
// 创建 href 属性为 www.baidu.com 的 a 标签字符串
str.link("www.baidu.com"); // '<a href="www.baidu.com" rel="external nofollow" >yqcoder</a>'21. localeCompare 按区域设置比较字符串大小
localeCompare(str),str:用于比较的字符串
大于时返回 1,等于时返回 0,小于时返回 -1
let str = "a";
let str1 = "b";
// 比较 str,str1 大小
str.localeCompare(str1); // -1
// 自身比较
str.localeCompare(str); // 0
// 比较 str1,str 大小
str.localeCompare(str); // -122. match 根据正则表达式匹配字符串
match(reg),reg:正则表达式对象
若匹配成功返回结果数组,未找到返回 null
let str = "yqcoder";
// 匹配正则 /coder/ 的字符串
str.match(/coder/); // ['coder', index: 2, input: 'yqcoder_yqcoder', groups: undefined]
// 匹配正则 /coder/g 的字符串
str.match(/coder/g); // ['coder']
// 不匹配正则
str.match(/\d/g); // null23. matchall 根据正则表达式获取所有匹配项
matchall(reg),reg:正则表达式,必须包含 g 标志
调用字符串需通过展开运算符 ... 处理,匹配成功返回迭代器,否则返回 undefined
let str = "yqcoder-yqcoder";
// 匹配正则 /coder/g 的字符串
console.log(...str.matchAll(/coder/g)); // ['coder', index: 2, input: 'yqcoder-yqcoder', groups: undefined] ['coder', index: 10, input: 'yqcoder-yqcoder', groups: undefined]
// 不匹配正则
console.log(...str.matchAll(/\d/g)); // undefined24. padEnd 在字符串尾部填充字符
padEnd(length, str?),length:目标长度,str:填充字符,默认为空格
返回填充后的字符串,若 length 小于原长度则返回原字符串
let str = "yqcoder";
// 默认填充字符串长度到 10
str.padEnd(10); // 'yqcoder '
// 填充 1 直到字符长度到 10
str.padEnd(10, 1); // 'yqcoder111'
// 填充 123 知道字符长度到 9
str.padEnd(9, 123); // 'yqcoder12'
// 填充 1 直到字符长度到 1
str.padEnd(1, 1); // 'yqcoder'25. padStart 在字符串头部填充字符
padStart(length, str?),length:目标长度,str:填充字符,默认为空格
返回填充后的字符串,若 length 小于原长度则返回原字符串
let str = "yqcoder";
// 默认填充字符串长度到 10
str.padStart(10); // ' yqcoder'
// 填充 1 直到字符长度到 10
str.padStart(10, 1); // '111yqcoder'
// 填充 123 知道字符长度到 9
str.padStart(9, 123); // '12yqcoder'
// 填充 1 直到字符长度到 1
str.padStart(1, 1); // 'yqcoder'26. repeat 重复字符串指定次数
repeat(number),number:重复次数
返回重复后的新字符串
let str = "yqcoder";
// 重复 1 次字符串
str.repeat(1); // 'yqcoder'
// 重复 2 次字符串
str.repeat(2); // 'yqcoderyqcoder'27. replace 替换首个匹配子串
replace(oldStr, newStr),oldStr:被替换子串,newStr:替换子串
返回替换后的新字符串
let str = "yqcoder-yqcoder";
// 将 yq 替换成 dyb
str.replace("yq", "dyb"); // 'dybcoder-yqcoder'
// 将所有 yq 替换成 dyb
str.replace(/yq/g, "dyb"); // 'dybcoder-dybcoder'28. replaceAll 替换所有匹配子串
replaceAll(oldStr, newStr),oldStr:被替换子串,newStr:替换子串
返回替换后的新字符串
let str = "yqcoder-yqcoder";
// 将 yq 替换成 dyb
str.replaceAll("yq", "dyb"); // 'dybcoder-dybcoder'29. search 查找子串或正则匹配位置
search(str),str:目标子串或正则
若找到则返回索引,否则返回 -1
let str = "yqcoder";
// 查找 'yq'
str.search("yq"); // 0
// 查找 'dyb'
str.search("dyb"); // -130. slice 截取字符串片段
slice(start, end?),start:起始索引,end:结束索引
左闭右开区间,若存在则返回截取片段,否则返回 ""
let str = "yqcoder";
// 截取字符串前 2 位
str.slice(0, 2); // 'yq'
// 截取字符串最后 1 位
str.slice(-1); // 'r'
// 截取字符串第 11 位
str.slice(10, 11); // ''31. small 生成小号字体标签字符串
small(),返回包裹在 small 标签内的字符串
let str = "yqcoder";
// 创建 small 标签字符串
str.small(); // '<small>yqcoder</small>'32. split 将字符串分割为数组
split(str?, length?),str:分隔符,length:可选的最大数组长度
返回分割后的数组。
let str = "yqcoder-yqcoder";
// 不传参,字符串直接转数组
str.split(); // ['yqcoder-yqcoder']
// 将字符串以 "-" 分割成数组
str.split("-"); // ['yqcoder', 'yqcoder']
// 将字符串以 "-" 分割成数组,只要数组第一项
str.split("-", 1); // ['yqcoder']33. startsWith 检测字符串是否以指定前缀开始
startsWith(str),str:目标前缀
匹配区分大小写,符合返回 true,否则返回 false
let str = "yqcoder";
// 判断是否 yq 开始
str.startsWith("yq"); // true
// 判断是否 Yq 开始
str.startsWith("Yq"); // false34. strike 生成删除线标签字符串
strike(),返回包裹在 strike 标签内的字符串
let str = "yqcoder";
// 创建删除标签字符串
str.strike(); // '<strike>yqcoder</strike>'35. sub 生成下标标签字符串
sub(),返回包裹在 sub 标签内的字符串
let str = "yqcoder";
// 创建下标标签字符串
str.sub(); // '<sub>yqcoder</sub>36. substr 截取指定长度的子串
substr(index, length?),index:起始索引,length:截取长度
返回截取后的字符串,包含 index 处字符。若不传 length,则截取至末尾
let str = "yqcoder";
// 裁剪下标 2 开始的全部字符
str.substr(2); // 'coder'
// 裁剪前 2 位字符
str.substr(0, 2); // 'yq'37. substring 截取指定区间的子串
substring(start, end?),start:起始索引,end:结束索引
返回截取后的字符串,包含 start 处字符,不包含 end 处字符。若不传 end,则截取至末尾
let str = "yqcoder";
// 裁剪下标 2 开始的全部字符
str.substring(2); // 'coder'
// 裁剪前 2 位字符
str.substring(0, 2); // 'yq'
// 裁剪第 2 位
str.substring(1, 2); // 'q'38. sup 生成上标标签字符串
sup(),返回包裹在 sup 标签内的字符串
let str = "yqcoder";
// 创建上标标签字符串
str.sup(); // '<sup>yqcoder</sup>'39. toLocaleLowerCase 转换为本地小写
toLocaleLowerCase(),将所有大写字母转换为小写
let str = "YqCoder";
// 字母转小写
str.toLocaleLowerCase(); // 'yqcoder'40. toLocaleUpperCase 转换为本地大写
toLocaleUpperCase(),将所有小写字母转换为大写
let str = "YqCoder";
// 字母转大写
str.toLocaleUpperCase(); // 'YQCODER'41. toLowerCase 转换为小写
toLowerCase(),将所有大写字母转换为小写
let str = "YqCoder";
// 字母转小写
str.toLowerCase(); // 'yqcoder'42. toUpperCase 转换为大写
toUpperCase(),将所有小写字母转换为大写
let str = "YqCoder";
// 字母转大写
str.toUpperCase(); // 'YQCODER'43. toString 转换为字符串
toString(),各类数据类型通过此方法转换为字符串
let arr = [1, [2, 3, [4, 5, 6, [7, 8, 9]]]];
let obj = { name: "yqcoder" };
let bl = true;
let number = 123;
// 数组转字符串,会将数组内数据平铺用, 拼接成字符串
arr.toString(); // '1,2,3,4,5,6,7,8,9'
// 对象转字符串
obj.toString(); // '[object Object]'
// 布尔值转字符串
bl.toString(); // 'true'
// 数字转字符串
number.toString(); // '123'44. toWellFormed 修复非规范字符串
toWellFormed(),将独立的代理项替换为 Unicode 替换字符 U+FFFD。
let str = "yqcoder";
let str1 = "yqcoder\uD800";
// 将 str 中的单独的代理项替换成 �
str.toWellFormed(); // 'yqcoder'
// 将 str1 中的单独的代理项替换成 �
str1.toWellFormed(); // 'yqcoder�'45. trim 去除首尾空格
trim(),返回去除首尾空格后的字符串,中间空格保留。
let str = " yq coder ";
// 将 str 去除头尾空格
str.trim(); // 'yq coder'46. trimEnd、trimRight 去除尾部空格
trimEnd()、trimRight() 返回去除尾部空格后的字符串。
let str = " yq coder ";
// 将 str 去除头尾空格
str.trimEnd(); // ' yq coder'
str.trimRight(); // ' yq coder'47. trimStart、trimLeft 去除头部空格
trimStart()、trimLeft() 返回去除头部空格后的字符串。
let str = " yq coder ";
// 将 str 去除头尾空格
str.trimStart(); // 'yq coder '
str.trimLeft(); // 'yq coder '总结
本文介绍了前端 JS 字符串常用方法,更多内容请参阅本站往期文章或继续浏览后续章节,感谢支持!
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
