From 0e97b9d21bffa685e4e287e24b4a9787fa1e3150 Mon Sep 17 00:00:00 2001 From: Andrey Shcherbakov Date: Tue, 26 Jun 2018 22:37:43 +0200 Subject: [PATCH] Add the code snippets of the Kotlin String Template article (#4541) --- .../com/baeldung/stringtemplates/Templates.kt | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 core-kotlin/src/main/kotlin/com/baeldung/stringtemplates/Templates.kt diff --git a/core-kotlin/src/main/kotlin/com/baeldung/stringtemplates/Templates.kt b/core-kotlin/src/main/kotlin/com/baeldung/stringtemplates/Templates.kt new file mode 100644 index 0000000000..4b2d863618 --- /dev/null +++ b/core-kotlin/src/main/kotlin/com/baeldung/stringtemplates/Templates.kt @@ -0,0 +1,115 @@ +package com.baeldung.stringtemplates + +/** + * Example of a useful function defined in Kotlin String class + */ +fun padExample(): String { + return "Hello".padEnd(10, '!') +} + +/** + * Example of a simple string template usage + */ +fun simpleTemplate(n: Int): String { + val message = "n = $n" + return message +} + +/** + * Example of a string template with a simple expression + */ +fun templateWithExpression(n: Int): String { + val message = "n + 1 = ${n + 1}" + return message +} + +/** + * Example of a string template with expression containing some logic + */ +fun templateWithLogic(n: Int): String { + val message = "$n is ${if (n > 0) "positive" else "not positive"}" + return message +} + +/** + * Example of nested string templates + */ +fun nestedTemplates(n: Int): String { + val message = "$n is ${if (n > 0) "positive" else if (n < 0) "negative and ${if (n % 2 == 0) "even" else "odd"}" else "zero"}" + return message +} + +/** + * Example of joining array's element into a string with a default separator + */ +fun templateJoinArray(): String { + val numbers = listOf(1, 1, 2, 3, 5, 8) + val message = "first Fibonacci numbers: ${numbers.joinToString()}" + return message +} + +/** + * Example of escaping the dollar sign + */ +fun notAStringTemplate(): String { + val message = "n = \$n" + return message +} + +/** + * Example of a simple triple quoted string + */ +fun showFilePath(): String { + val path = """C:\Repository\read.me""" + return path +} + +/** + * Example of a multiline string + */ +fun showMultiline(): String { + val receipt = """Item 1: $1.00 +Item 2: $0.50""" + return receipt +} + +/** + * Example of a multiline string with indentation + */ +fun showMultilineIndent(): String { + val receipt = """Item 1: $1.00 + >Item 2: $0.50""".trimMargin(">") + return receipt +} + +/** + * Example of a triple quoted string with a not-working escape sequence + */ +fun showTripleQuotedWrongEscape(): String { + val receipt = """Item 1: $1.00\nItem 2: $0.50""" + return receipt +} + +/** + * Example of a triple quoted string with a correctly working escape sequence + */ + +fun showTripleQuotedCorrectEscape(): String { + val receipt = """Item 1: $1.00${"\n"}Item 2: $0.50""" + return receipt +} + +fun main(args: Array) { + println(padExample()) + println(simpleTemplate(10)) + println(templateWithExpression(5)) + println(templateWithLogic(7)) + println(nestedTemplates(-5)) + println(templateJoinArray()) + println(notAStringTemplate()) + println(showFilePath()) + println(showMultiline()) + println(showMultilineIndent()) + println(showTripleQuotedWrongEscape()) + println(showTripleQuotedCorrectEscape()) +}