You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中识别仅含空白字符的字符串?正则表达式使用报错求助

解决Kotlin中识别仅含空白字符字符串的问题

你的代码始终返回false是因为正则表达式错误使用了JavaScript风格的/分隔符——Java/Kotlin的正则引擎不需要这个前缀和后缀,这是导致匹配失败的核心原因。

修正正则表达式的实现

private fun isOnlySpaces(deviceFriendlyName: String): Boolean {
    // 去掉多余的/,^和$匹配字符串首尾,\\s+匹配至少一个空白字符(空格、制表符、换行等)
    val whiteSpaces = Pattern.compile("^\\s+$")
    return whiteSpaces.matcher(deviceFriendlyName).matches()
}

或者用Kotlin原生的正则字面量更简洁:

private fun isOnlySpaces(deviceFriendlyName: String): Boolean {
    return "^\\s+$".toRegex().matches(deviceFriendlyName)
}

不用正则的实现(遍历字符检查)

如果不想用正则,可以直接遍历字符串的每个字符,判断是否全为空白:

private fun isOnlySpaces(deviceFriendlyName: String): Boolean {
    // 排除空字符串(不用isEmpty(),直接判断长度)
    if (deviceFriendlyName.length == 0) return false
    // 检查每个字符是否都是空白
    for (char in deviceFriendlyName) {
        if (!Character.isWhitespace(char)) {
            return false
        }
    }
    return true
}

也可以用Kotlin的all函数简化写法:

private fun isOnlySpaces(deviceFriendlyName: String): Boolean {
    return deviceFriendlyName.length > 0 && deviceFriendlyName.all { it.isWhitespace() }
}

以上几种方法都能正确识别仅包含空白字符的字符串,且没有使用isEmpty()方法。

内容的提问来源于stack exchange,提问作者Nikitha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 17:16:27