Android Studio Kotlin 如何判断字符串为无空字符作弊的真正空值
关于「真正空」字符串校验的实现方案
内置函数的局限性
Android SDK 提供的 TextUtils.isEmpty() 仅能判断两种情况:字符串为 null,或者字符串长度为0。对于包含零宽空格、零宽连接符、全角空格、换行符、制表符等不可见空白字符的字符串,这个方法会直接返回false,完全无法覆盖你要拦截作弊空字符的需求,没有可以直接满足需求的内置校验函数。
手动校验实现逻辑
你可以自行实现校验工具方法,覆盖所有不可见空白字符场景,示例代码如下:
Kotlin 版本
fun isTrulyEmpty(str: CharSequence?): Boolean { if (str.isNullOrEmpty()) return true // 遍历所有字符,只要存在任意可见的非空白字符,就不是真正空 for (char in str) { if (!Character.isWhitespace(char) && char != '\u200B' // 零宽空格 && char != '\u200C' // 零宽非连接符 && char != '\u200D' // 零宽连接符 && char != '\uFEFF' // 零宽无间断空格 && char != '\u00A0' // 非间断空格 ) { return false } } return true }
Java 版本
public static boolean isTrulyEmpty(CharSequence str) { if (str == null || str.length() == 0) return true; for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (!Character.isWhitespace(c) && c != '\u200B' && c != '\u200C' && c != '\u200D' && c != '\uFEFF' && c != '\u00A0' ) { return false; } } return true; }
你可以根据业务需要,往判断条件里新增其他需要拦截的特殊空白字符编码即可。
内容的提问来源于stack exchange,提问作者omoor
相关产品推荐
相关产品推荐

