From d1e248b8c33698aca9ae2ea5c5ec83e0017aff10 Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Mon, 22 May 2017 14:42:42 +0300 Subject: [PATCH] Added String.repeat() --- .../src/main/kotlin/kotlin/text/Strings.kt | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/runtime/src/main/kotlin/kotlin/text/Strings.kt b/runtime/src/main/kotlin/kotlin/text/Strings.kt index 53d5925f2aa..5945810515e 100644 --- a/runtime/src/main/kotlin/kotlin/text/Strings.kt +++ b/runtime/src/main/kotlin/kotlin/text/Strings.kt @@ -2364,3 +2364,30 @@ public fun CharSequence.asSequence(): Sequence { if (this is String && isEmpty()) return emptySequence() return Sequence { this.iterator() } } + +/** + * Returns a string containing this char sequence repeated [n] times. + * @throws [IllegalArgumentException] when n < 0. + * @sample samples.text.Strings.repeat + */ +public fun CharSequence.repeat(n: Int): String { + require (n >= 0) { "Count 'n' must be non-negative, but was $n." } + + return when (n) { + 0 -> "" + 1 -> this.toString() + else -> { + when (length) { + 0 -> "" + 1 -> this[0].let { char -> fromCharArray(CharArray(n) { char }, 0, n) } + else -> { + val sb = StringBuilder(n * length) + for (i in 1..n) { + sb.append(this) + } + sb.toString() + } + } + } + } +}