Kotlin字符串格式化
外观
Kotlin字符串格式化是一种将变量、表达式或对象的值动态插入到字符串中的技术,使字符串的构建更加灵活和可读。Kotlin提供了多种方式来实现字符串格式化,包括字符串模板、`String.format()`函数以及更高级的格式化工具。本教程将详细介绍这些方法,并通过示例展示其实际应用。
字符串模板[编辑 | 编辑源代码]
Kotlin的字符串模板是最简单的字符串格式化方式,通过在字符串中直接嵌入变量或表达式来实现。使用`${}`语法可以将变量或表达式的结果插入到字符串中。
基本用法[编辑 | 编辑源代码]
fun main() {
val name = "Alice"
val age = 25
val message = "My name is $name and I am $age years old."
println(message)
}
输出:
My name is Alice and I am 25 years old.
如果变量是对象的属性,可以直接使用`${object.property}`的形式:
data class Person(val name: String, val age: Int)
fun main() {
val person = Person("Bob", 30)
val message = "Name: ${person.name}, Age: ${person.age}"
println(message)
}
输出:
Name: Bob, Age: 30
表达式嵌入[编辑 | 编辑源代码]
字符串模板还支持嵌入更复杂的表达式:
fun main() {
val a = 10
val b = 20
val sumMessage = "The sum of $a and $b is ${a + b}"
println(sumMessage)
}
输出:
The sum of 10 and 20 is 30
`String.format()` 方法[编辑 | 编辑源代码]
Kotlin的`String.format()`方法提供了更强大的格式化功能,类似于Java的`String.format()`。它支持格式化数字、日期、对齐等高级功能。
基本格式化[编辑 | 编辑源代码]
使用占位符(如`%s`、`%d`、`%f`)来格式化字符串:
fun main() {
val name = "Charlie"
val score = 95.5
val formattedString = "Student: %s, Score: %.1f".format(name, score)
println(formattedString)
}
输出:
Student: Charlie, Score: 95.5
数字格式化[编辑 | 编辑源代码]
可以控制数字的宽度、精度和对齐方式:
fun main() {
val price = 1234.5678
println("Formatted price: %10.2f".format(price)) // 宽度为10,保留2位小数
}
输出:
Formatted price: 1234.57
日期格式化[编辑 | 编辑源代码]
结合`java.time`包,可以格式化日期:
import java.time.LocalDate
import java.time.format.DateTimeFormatter
fun main() {
val date = LocalDate.now()
val formattedDate = "Today is %1\$tB %1\$td, %1\$tY".format(date)
println(formattedDate)
}
输出(示例):
Today is October 25, 2023
多行字符串与缩进[编辑 | 编辑源代码]
Kotlin支持多行字符串(使用`"""`),并结合`trimMargin()`或`trimIndent()`来去除缩进:
fun main() {
val message = """
|Hello,
|This is a multi-line
|string in Kotlin.
""".trimMargin()
println(message)
}
输出:
Hello, This is a multi-line string in Kotlin.
实际应用案例[编辑 | 编辑源代码]
日志记录[编辑 | 编辑源代码]
字符串格式化在日志记录中非常有用:
fun logUserLogin(username: String, time: String) {
println("[LOG] User '%s' logged in at %s".format(username, time))
}
fun main() {
logUserLogin("admin", "2023-10-25 14:30")
}
输出:
[LOG] User 'admin' logged in at 2023-10-25 14:30
生成报告[编辑 | 编辑源代码]
生成格式化的表格数据:
fun generateReport(data: List<Pair<String, Double>>) {
println("| %-15s | %10s |".format("Item", "Price"))
println("|----------------|------------|")
data.forEach { (item, price) ->
println("| %-15s | %10.2f |".format(item, price))
}
}
fun main() {
val items = listOf("Laptop" to 999.99, "Phone" to 699.50, "Tablet" to 299.99)
generateReport(items)
}
输出:
| Item | Price | |----------------|------------| | Laptop | 999.99 | | Phone | 699.50 | | Tablet | 299.99 |
总结[编辑 | 编辑源代码]
Kotlin提供了多种字符串格式化方法:
- 字符串模板:简单易用,适合直接嵌入变量或表达式。
- `String.format()`:功能强大,支持数字、日期等高级格式化。
- 多行字符串:方便处理长文本或模板。
根据需求选择合适的方法,可以使代码更清晰、更易维护。