如何解决Kotlin - 如何从多行字符串中修剪所有前导空格?
String.trim()
不适用于使用 buildString
构建的字符串。例如,
val s = buildString {
append("{")
append('\n')
append(" ".repeat(5))
append("hello")
append(" ".repeat(7))
append("world")
append("}")
}
println(s.trim())
这个打印
{
hello world}
但我需要它来打印
{
hello
world
}
如何在不编写自己的修剪方法的情况下修剪缩进?
解决方法
trim()
仅从整个字符串的开头和结尾删除空格,而不是每行。您可以使用以下命令从每一行中删除空格:
s.lineSequence()
.map { it.trim() }
.joinToString("\n")
请注意,作为副作用,上面的代码会将所有行尾转换为 LF
("\n"
)。您可以将 "\n"
替换为 "\r\n"
或 "\r"
以获得不同的结果。为了完全保留原始字符串中的行尾,我们需要一个更复杂的解决方案。
一个班轮:
1em
,
您可以使用正则表达式来修剪前导空格:
val s = buildString {
append("{")
append('\n')
append(" ".repeat(5))
append("hello\n")
append(" ".repeat(7))
append("world\n")
append("}")
}
println(s.replace(Regex("""^\s+""",RegexOption.MULTILINE),""))
输出:
{
hello
world
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。