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
相关产品推荐
相关产品推荐

