跳转到内容

Kotlin字符串格式化

来自代码酷
Admin留言 | 贡献2025年5月2日 (五) 00:18的版本 (Page creation by admin bot)

(差异) ←上一版本 | 已核准修订 (差异) | 最后版本 (差异) | 下一版本→ (差异)


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()`:功能强大,支持数字、日期等高级格式化。
  • 多行字符串:方便处理长文本或模板。

根据需求选择合适的方法,可以使代码更清晰、更易维护。