字符串方法在javascript中如何使用_有哪些实用技巧【教程】
发布时间 - 2026-01-20 00:00:00 点击率:次JavaScript字符串不可变,所有方法返回新字符串;replace()需/g标志全局替换;includes()/startsWith()/endsWith()语义更清晰;模板字符串支持表达式但保留空白符。
字符串方法在 JavaScript 中不能直接链式调用修改原字符串
JavaScript 字符串是原始类型、不可变的,所有方法(如 toUpperCase()、replace()、slice())都返回新字符串,不会修改原变量。常见错误是误以为 str.trim() 会改变 str 本身:
- ❌ 错误写法:
let str = " hello "; str.trim(); console.log(str); // 输出 " hello " - ✅ 正确写法:
let str = " hello "; str = str.trim(); console.log(str); // 输出 "hello"
这个特性影响所有字符串操作——赋值或传参时必须显式接收返回值。
replace() 只替换第一个匹配项,要全局替换得用正则
replace() 默认只处理第一个匹配,即使传入字符串字面量。想替换全部,必须用带 g 标志的正则表达式:
- ❌
"aabbcc".replace("b", "x"); // "aaxbcc" - ✅
"aabbcc".replace(/b/g, "x"); // "aaxxcc" - ⚠️ 注意:如果搜索内容来自用户输入,需先转义正则特殊字符,否则可能报错
Invalid regular expression
动态构建正则时可用 new RegExp(pattern, "g"),但务必对 pattern 做转义处理(例如用 pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"))。
includes()、startsWith()、endsWith() 比 indexOf() 更语义清晰且支持可选参数
过去常用 indexOf() !== - 判断存在性,现在推荐语义更强、更安全的三个方法:
-
str.includes("foo")—— 是否包含子串(支持第二个参数:起始搜索位置) -
str.startsWith("Hello")—— 是否以某串开头(支持第二个参数:起始索引) -
str.endsWith("!")—— 是否以某串结尾(支持第二个参数:检查长度上限)
它们不返回位置索引,避免了 0 和 -1 的真假混淆;且对空字符串行为明确(如 "abc".startsWith("") === true),而 indexOf("") 总是返回 0,容易引发逻辑 bug。
模板字符串中嵌入表达式比拼接更安全,但要注意换行和空格
`Hello ${name || 'Guest'}` 比 "Hello " + (name || "Guest") 更简洁、无类型隐式转换风险。但要注意:
- 模板字符串保留换行和缩进空格,
`a\nb`真实包含换行符,不像多行字符串拼接那样需要手动加\n - 若需去除首尾换行/缩进,可用
String.raw或函数标签(如stripIndent类库),但原生不提供自动 trim 功能 - 嵌套反引号需转义:
`She said: \`Hello\``
真正容易被忽略的是模板字符串的“标签函数”能力——它把插值前的静态部分和动态值分开传给函数,可用于 SQL 转义、国际化等场景,但多数人只当它是个高级拼接工具。
# javascript
# java
# 正则表达式
# 工具
# ai
# 隐式转换
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
简单实现Android文件上传
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
详解Android图表 MPAndroidChart折线图
JavaScript Ajax实现异步通信
如何用已有域名快速搭建网站?
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
如何用5美元大硬盘VPS安全高效搭建个人网站?
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
晋江文学城电脑版官网 晋江文学城网页版直接进入
如何用PHP快速搭建CMS系统?
教学论文网站制作软件有哪些,写论文用什么软件
?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
音乐网站服务器如何优化API响应速度?
三星、SK海力士获美批准:可向中国出口芯片制造设备
JS经典正则表达式笔试题汇总
EditPlus 正则表达式 实战(3)
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
详解阿里云nginx服务器多站点的配置
如何做网站制作流程,*游戏网站怎么搭建?
如何基于云服务器快速搭建网站及云盘系统?
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
Python函数文档自动校验_规范解析【教程】
如何生成腾讯云建站专用兑换码?
如何用JavaScript实现文本编辑器_光标和选区怎么处理
高端智能建站公司优选:品牌定制与SEO优化一站式服务
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
北京专业网站制作设计师招聘,北京白云观官方网站?
QQ浏览器网页版登录入口 个人中心在线进入
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
php打包exe后无法访问网络共享_共享权限设置方法【教程】
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
如何在IIS7上新建站点并设置安全权限?
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
中山网站制作网页,中山新生登记系统登记流程?
Laravel怎么为数据库表字段添加索引以优化查询
Laravel如何使用.env文件管理环境变量?(最佳实践)
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
长沙做网站要多少钱,长沙国安网络怎么样?
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
,南京靠谱的征婚网站?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何用VPS主机快速搭建个人网站?
如何在IIS中新建站点并解决端口绑定冲突?
Laravel如何创建自定义中间件?(Middleware代码示例)
5种Android数据存储方式汇总

