最可靠的方法是先类型判断再 trim():typeof str === 'string' && str.trim() === '',可准确识别各类空白字符,兼顾 null/undefined 安全性,且语义清晰、兼容性好。

判断字符串是否为空白,最可靠的方法是用 trim() 去除首尾空格后判断长度是否为 0。
用 trim() + length 判断(推荐)
这是最常用、兼容性好、语义清晰的方式:
-
str.trim() === '':返回true表示原字符串只包含空白字符(空格、制表符、换行符等)或为空 - 它能正确识别
" "、" "(全角空格)、"u00A0"(不间断空格)等常见空白,但注意:trim()默认只处理 Unicode 标准空白字符(ES5+),不包括某些罕见的 Unicode 分隔符 - 写法简洁安全,不会因
null或undefined报错 —— 但前提是先确保str是字符串类型,否则要加类型防护
兼顾 null/undefined 的健壮写法
实际开发中,变量可能不是字符串,直接调用 trim() 会报错。建议先做类型判断:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
typeof str === 'string' && str.trim() === ''- 或者更宽松:
!str || (typeof str === 'string' && !str.trim())(利用!将空字符串、null、undefined、0等转为true,但要注意这也会把0、false当作“空”,所以仅适用于明确只处理字符串的场景) - 若需严格区分
0和空白字符串,避免用!str,坚持用类型检查 +trim()
注意全角空格和特殊空白符
标准 trim() 对中文全角空格( ,U+3000)和某些 Unicode 空白(如 U+2000–U+200F)不敏感:
- 如果业务涉及多语言或富文本输入,且需清理全角空格,可扩展正则:
/^[\s\u3000]*$/.test(str) - 更通用的方案是用
str.replace(/s/g, '').length === 0,但注意s在 JS 中默认不匹配 U+3000;如需支持,得显式加上:/^[\s\u3000\uFEFF\u2000-\u200F\u2028\u2029]*$/.test(str) - 一般项目用
trim()已足够,除非明确遇到全角空格误判问题
不推荐的做法
以下方式容易出错,应避免:
-
str === '':漏掉" "、" "等含空白的字符串 -
!str:把0、false、null、undefined全部当作“空”,语义不准确 -
str.length === 0:同第一点,未去除空白 - 自己写循环遍历每个字符判断
char :逻辑复杂、易漏 Unicode 边界,且性能差
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










