javascript怎样进行字符串处理【教程】
技术百科
紅蓮之龍
发布时间:2026-01-25
浏览: 次 JavaScript字符串处理应优先使用slice()截取、includes()判断包含、toLocaleLowerCase()处理大小写,并注意Unicode字符和正则全局标志g;避免substr()废弃方法及indexOf()误判。
JavaScript 字符串处理不需要引入任何库,所有操作都基于原生 String 类型的方法和 RegExp 对象,但很多开发者会误用或忽略边界情况,导致替换失败、大小写异常、Unicode 截断等问题。
字符串截取用 slice() 而不是 substring() 或 substr()
slice() 支持负数索引(从末尾开始计),语义清晰,且不会自动交换参数顺序;substring() 会把小数放前面、大数放后面,substr() 已被废弃(MDN 标记为 deprecated)。
- 要取后 3 个字符:用
'hello'.slice(-3)→'llo' - 要截掉前两个字符:用
str.slice(2),别用str.substring(2)(虽然结果一样,但逻辑不一致) - 负数起始 + 正数结束:如
'abcde'.slice(-4, -1)→'bcd',而substring()不支持负数
大小写转换注意 locale 和非 ASCII 字符
toLowerCase() 和 toUpperCase() 默认按 Unicode Basic Latin 处理,在土耳其语、希腊语等 locale 下可能出错(比如土耳其的 'I'. 应该是 
'ı',不是 'i')。
- 普通英文场景:直接用
str.toLowerCase() - 国际化应用:显式指定 locale,如
str.toLocaleLowerCase('tr-TR') - 避免对含 emoji 或组合字符的字符串调用
toUpperCase()后再比较——某些符号(如 ß)转大写会变成两个字符('ß'.toUpperCase()→'SS'),破坏长度预期
正则替换必须加 g 标志才能全局替换
str.replace(/a/, 'b') 只换第一个 'a';漏掉 g 是最常见错误之一。另外,若替换内容含变量,必须用 RegExp 构造函数,不能直接拼接字符串字面量。
- 全局替换空格:
str.replace(/\s/g, '_') - 动态替换关键词:
const keyword = 'foo'; str.replace(new RegExp(keyword, 'g'), 'bar') - 想保留原始大小写做替换?用函数作为第二个参数:
str.replace(/([a-z])/g, (m, p1) => p1.toUpperCase())
判断是否包含子串优先用 includes(),不用 indexOf() !== -1
includes() 语义明确、可读性强,且支持第二个参数(起始位置);indexOf() 返回数字,容易和 falsy 值混淆(比如 str.indexOf('a') === 0 是合法开头,但 !str.indexOf('a') 会误判)。
- 检查是否存在:
str.includes('http') - 从第 10 个字符后检查:
str.includes('test', 10) - 注意:IE 不支持
includes(),如需兼容,可用str.indexOf('x') >= 0替代,但别用!= -1—— 容易和==混淆
真正麻烦的是 Unicode 字符串操作,比如 emoji('??')、带重音符号的字母('café'),它们在 .length 和 .split('') 中表现异常;处理这类字符串时,应优先考虑 Array.from(str) 或使用 Intl.Segmenter(较新 API),而不是默认的字符索引方式。
# 关键词
# 的是
# 而不是
# 第一个
# 已被
# 不需要
# 第二个
# 不支持
# word
# http
# 对象
# javascript
# java
# String
# 构造函数
# 字符串
# asic
# ASCII
# const
# tr
# Length
# Array
# regexp
# 土耳其
# 希腊语
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Python如何创建带属性的XML节点
- Win11怎么设置虚拟内存_Windows 11优
- 如何用正则表达式精确匹配“start”到“end”
- MySQL 中使用 IF 和 CASE 实现查询字
- php485返回数据不完整怎么办_php485数据
- php删除数据怎么软删除_添加is_del字段标记
- Win10怎么卸载金山毒霸_Win10彻底卸载金山
- 如何开启Windows的远程服务器管理工具(RSA
- C++如何使用std::transform批量处理
- Win11文件夹预览图不显示怎么办_Win11缩略
- Windows怎样关闭开始菜单推荐广告_Windo
- Win11怎么关闭系统声音_Win11系统提示音静
- Win11文件扩展名怎么显示 Win11查看文件后
- 如何使用Golang捕获测试日志_Golang t
- PythonPandas数据分析教程_数据清洗与处
- 如何在Golang中实现微服务服务拆分_Golan
- Windows10如何查看保存的WiFi密码_Wi
- 如何使用Golang实现容器自动化运维_Golan
- win11如何清理传递优化文件 Win11为C盘瘦
- Windows电脑如何截屏?(四种快捷方法)
- php报错怎么查看_定位PHP致命错误与警告的方法
- Win11任务栏颜色怎么改_Win11自定义任务栏
- Win11鼠标灵敏度怎么调 Win11鼠标指针移动
- php打包exe后无法读取环境变量_变量配置方法【
- PHP主流架构如何处理会话管理_Session与C
- Win11如何设置计划任务 Win11定时执行程序
- 如何从 Go 的 map[string]inter
- Win10怎样清理C盘浏览器缓存_Win10清理浏
- 本地php环境打开php文件直接下载_浏览器解析p
- 如何在 Go 开发中正确处理本地包导入与远程模块路
- Win11关机快捷键是什么_Win11快速关机方法
- Win10系统怎么查看网络连接状态_Windows
- Windows10如何更改盘符名称_Win10重命
- Win11怎么设置默认邮件客户端 Win11修改M
- Win11怎么设置ipv4地址_Windows 1
- 如何在JavaScript中动态拼接PHP的bas
- c++ namespace命名空间用法_c++避免
- C++如何将C风格字符串(char*)转换为std
- VSC怎么快速定位PHP错误行_错误追踪设置法【方
- Python对象比较与排序_魔术方法解析【教程】
- php485在macos下怎么配置_php485
- c# F# 的 MailboxProcessor
- Windows10电脑怎么设置虚拟光驱_Win10
- Windows资源管理器总是卡顿或重启怎么办?(修
- Win11怎么开启剪贴板历史记录_Windows1
- C#如何使用XPathNavigator高效查询X
- Windows的便笺功能如何使用?(桌面备忘技巧)
- Python配置文件操作教程_JSONINIYAM
- 如何使用Golang实现文件追加操作_向已有文件追
- Mac怎么给文件夹加密_Mac创建加密磁盘映像教程

QQ客服