跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Kotlin字符串模板
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
{{DISPLAYTITLE:Kotlin字符串模板}} '''Kotlin字符串模板'''是Kotlin语言中一种强大的字符串插值机制,允许开发者在字符串字面量中直接嵌入变量或表达式,从而简化字符串拼接操作。该特性不仅提升了代码可读性,还减少了因手动拼接导致的错误。 == 基本概念 == Kotlin字符串模板通过在字符串中使用<code>${}</code>语法实现。当嵌入的是简单变量时,可以省略花括号,直接使用<code>$变量名</code>。模板会在运行时自动计算表达式结果并将其转换为字符串。 === 语法结构 === 字符串模板的两种形式: * 简单变量:<code>$variableName</code> * 表达式:<code>${expression}</code> == 基础示例 == 以下示例展示字符串模板的基本用法: <syntaxhighlight lang="kotlin"> fun main() { val name = "Alice" val age = 25 val message = "Hello, $name! You are ${age} years old." println(message) } </syntaxhighlight> '''输出:''' <pre> Hello, Alice! You are 25 years old. </pre> '''说明:''' * <code>$name</code>直接引用变量 * <code>${age}</code>虽然可以简写为<code>$age</code>,但显式使用花括号更规范 == 表达式嵌入 == 字符串模板支持任意有效表达式,包括运算、方法调用等: <syntaxhighlight lang="kotlin"> fun main() { val a = 10 val b = 20 println("Sum: ${a + b}") // 数学运算 println("Uppercase: ${"kotlin".uppercase()}") // 方法调用 } </syntaxhighlight> '''输出:''' <pre> Sum: 30 Uppercase: KOTLIN </pre> == 多行字符串模板 == Kotlin的三引号字符串(raw string)也支持模板: <syntaxhighlight lang="kotlin"> fun main() { val language = "Kotlin" val multiline = """ This is a $language multi-line string. It preserves all indentation and line breaks. Today is ${java.time.LocalDate.now()}. """.trimIndent() println(multiline) } </syntaxhighlight> '''输出(示例):''' <pre> This is a Kotlin multi-line string. It preserves all indentation and line breaks. Today is 2023-05-15. </pre> == 实际应用案例 == === 案例1:用户信息格式化 === <syntaxhighlight lang="kotlin"> data class User(val firstName: String, val lastName: String, val score: Int) fun formatUserReport(user: User): String { return """ |User Report |---------- |Full Name: ${user.firstName} ${user.lastName} |Score: ${user.score} (${user.score * 10} points) |Grade: ${if (user.score > 80) "A" else "B"} """.trimMargin() } </syntaxhighlight> === 案例2:动态SQL查询生成 === <syntaxhighlight lang="kotlin"> fun buildQuery(table: String, columns: List<String>, condition: String): String { return """ SELECT ${columns.joinToString(", ")} FROM $table WHERE $condition """.trimIndent() } </syntaxhighlight> == 高级特性 == === 转义$字符 === 当需要显示<code>$</code>符号而非模板时,使用转义: <syntaxhighlight lang="kotlin"> val price = 100 println("Price: \$$price") // 输出: Price: $100 </syntaxhighlight> === 模板嵌套 === 字符串模板可以嵌套其他模板: <syntaxhighlight lang="kotlin"> fun main() { val template = "template" println("This is a ${"nested ${template.uppercase()}"}") } </syntaxhighlight> '''输出:''' <pre> This is a nested TEMPLATE </pre> == 性能考虑 == Kotlin字符串模板在编译时会转换为<code>StringBuilder</code>操作,与手动拼接性能相当。以下代码展示编译后的等效操作: <mermaid> flowchart LR A["原始模板"] --> B["编译器处理"] B --> C["生成StringBuilder代码"] C --> D["字节码输出"] </mermaid> 例如: <syntaxhighlight lang="kotlin"> // 源代码 "Value: $value" // 等效编译代码 StringBuilder().append("Value: ").append(value).toString() </syntaxhighlight> == 数学公式支持 == 当需要在字符串中嵌入数学表达式时,可以结合模板使用: <math> val formula = "Euler's formula: e^{iπ} + 1 = ${0}" </math> == 最佳实践 == * 对复杂表达式始终使用<code>${}</code>形式 * 避免在模板中编写过长或副作用明显的表达式 * 多行字符串优先使用<code>trimIndent()</code>或<code>trimMargin()</code> * 需要原样输出<code>$</code>时务必转义 == 常见问题 == {{Q&A |问题1 = 字符串模板与Java字符串拼接有何区别? |答案1 = Kotlin模板更简洁,编译后与Java的StringBuilder优化相同,但可读性更高。 |问题2 = 能否在注解中使用字符串模板? |答案2 = 不可以,注解参数必须是编译期常量。 }} == 总结 == Kotlin字符串模板通过简洁的语法实现了强大的字符串构建能力,是替代传统拼接操作的现代化解决方案。从简单变量插入到复杂表达式计算,该特性显著提升了代码的清晰度和维护性。 [[Category:编程语言]] [[Category:Kotlin]] [[Category:Kotlin字符串]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:Q&A
(
编辑
)