1. 概述

在软件开发中,移除字符串中的空白字符是一个常见的需求。很多编程语言都提供了良好的内置支持来解决这个问题。

本文将介绍几种在 Kotlin 中移除字符串中所有空白字符的常用方法,包括使用正则表达式、字符过滤和字符串修剪等技术。

2. 使用 replace 方法

Kotlin 中最直接的方式之一是使用 String.replace() 方法。我们可以将空格替换为空字符串,从而实现删除空格:

val example = "House Of The Dragon"
val withOutSpaces = example.replace(" ", "")

assertThat(withOutSpaces).isEqualTo("HouseOfTheDragon")

如果希望移除所有空白字符(包括制表符、换行符等),可以使用正则表达式 \s 来匹配所有空白字符:

val example = "House Of The Dragon"
val withOutSpaces = example.replace("\\s".toRegex(), "")

assertThat(withOutSpaces).isEqualTo("HouseOfTheDragon")

⚠️ 有些空白字符是 Unicode 定义的特殊空白字符(如 U+3000 IDEOGRAPHIC SPACE),\s 可能无法完全覆盖。此时可以使用 Unicode 属性 \p{Zs} 来匹配所有空白字符类别:

val example = "House Of The Dragon"
val withOutSpaces = example.replace("\\p{Zs}+".toRegex(), "")

assertThat(withOutSpaces).isEqualTo("HouseOfTheDragon")

✅ 该方法适用于需要全面清除空白字符的场景,如数据清洗、格式标准化等。

3. 使用字符过滤

Kotlin 的字符串可以被视为字符序列,我们可以利用 filterNot 配合 Char.isWhitespace() 方法来移除所有空白字符:

val example = "House Of The Dragon"
val withOutSpaces = example.filterNot { it.isWhitespace() }

assertThat(withOutSpaces).isEqualTo("HouseOfTheDragon")

✅ 该方法可读性强,逻辑清晰,适用于对空白字符进行更复杂的判断和处理。

⚠️ 如果性能是关键考量,不建议在大规模字符串处理中频繁使用该方式。

4. 使用 trim 方法及其变体

如果我们只想移除字符串前后的空白字符,而不是全部,可以使用 Kotlin 提供的 trim() 方法:

val example = " House Of The Dragon "
val trimmed = example.trim()

assertThat(trimmed).isEqualTo("House Of The Dragon")

如果只想移除开头或结尾的空白字符,可以分别使用 trimStart()trimEnd()

val example = "  House Of The Dragon  "
val trimmedAtStart = example.trimStart()
val trimmedAtEnd = example.trimEnd()

assertThat(trimmedAtStart).isEqualTo("House Of The Dragon  ")
assertThat(trimmedAtEnd).isEqualTo("  House Of The Dragon")

✅ 这些方法非常适合处理用户输入、前后空格清理等场景。

⚠️ 注意:trim() 默认只移除标准空白字符(空格、换行、制表符等),不包括 Unicode 中的特殊空白字符。

5. 总结

本文介绍了在 Kotlin 中移除字符串中所有空白字符的几种常见方法:

方法 适用场景 是否移除所有空白字符 是否支持 Unicode 空格
replace(" ", "") 仅移除空格
replace("\\s".toRegex(), "") 移除常见空白字符
replace("\\p{Zs}+".toRegex(), "") 移除所有 Unicode 空格
filterNot { it.isWhitespace() } 移除所有空白字符
trim() / trimStart() / trimEnd() 移除前后空白字符 ❌(仅限前后)

你可以根据实际需求选择最适合的方法。例如,如果需要彻底清除所有空白字符,推荐使用正则表达式 \p{Zs}filterNot;如果只是清理前后空格,trim() 是更简洁的选择。

完整示例代码可在 GitHub 上找到。


原始标题:Remove All Whitespaces from a String in Kotlin