Fixed #KT-3379 jet.String.trimLeading and trimTrailing default whitespace trim
This commit is contained in:
committed by
Nikolay Krasko
parent
622c1c3790
commit
296bda2e3a
@@ -509,3 +509,23 @@ public inline fun String.toCollection(): Collection<Char> = toCollection(ArrayLi
|
||||
|
||||
/** Copies all characters into a [[Set]] */
|
||||
public inline fun String.toSet(): Set<Char> = toCollection(HashSet<Char>())
|
||||
|
||||
/** Returns a new String containing the everything but the leading whitespace characters */
|
||||
public inline fun String.trimLeading(): String {
|
||||
var count = 0
|
||||
|
||||
while ((count < this.length) && (this[count] <= ' ')) {
|
||||
count++
|
||||
}
|
||||
return if (count > 0) substring(count) else this
|
||||
}
|
||||
|
||||
/** Returns a new String containing the everything but the trailing whitespace characters */
|
||||
public inline fun String.trimTrailing(): String {
|
||||
var count = this.length
|
||||
|
||||
while (count > 0 && this[count - 1] <= ' ') {
|
||||
count--
|
||||
}
|
||||
return if (count < this.length) substring(0, count) else this
|
||||
}
|
||||
|
||||
@@ -240,4 +240,52 @@ class StringJVMTest {
|
||||
test fun formatter() {
|
||||
assertEquals("12", "%d%d".format(1, 2))
|
||||
}
|
||||
|
||||
test fun trimLeading() {
|
||||
assertEquals("", "".trimLeading())
|
||||
assertEquals("a", "a".trimLeading())
|
||||
assertEquals("a", " a".trimLeading())
|
||||
assertEquals("a", " a".trimLeading())
|
||||
assertEquals("a ", " a ".trimLeading())
|
||||
assertEquals("a b", " a b".trimLeading())
|
||||
assertEquals("a b ", " a b ".trimLeading())
|
||||
|
||||
assertEquals("a", "\ta".trimLeading())
|
||||
assertEquals("a", "\t\ta".trimLeading())
|
||||
assertEquals("a", "\ra".trimLeading())
|
||||
assertEquals("a", "\na".trimLeading())
|
||||
}
|
||||
|
||||
test fun trimTrailing() {
|
||||
assertEquals("", "".trimTrailing())
|
||||
assertEquals("a", "a".trimTrailing())
|
||||
assertEquals("a", "a ".trimTrailing())
|
||||
assertEquals("a", "a ".trimTrailing())
|
||||
assertEquals(" a", " a ".trimTrailing())
|
||||
assertEquals("a b", "a b ".trimTrailing())
|
||||
assertEquals(" a b", " a b ".trimTrailing())
|
||||
|
||||
assertEquals("a", "a\t".trimTrailing())
|
||||
assertEquals("a", "a\t\t".trimTrailing())
|
||||
assertEquals("a", "a\r".trimTrailing())
|
||||
assertEquals("a", "a\n".trimTrailing())
|
||||
}
|
||||
|
||||
test fun trimTrailingAndLeading() {
|
||||
val examples = array(
|
||||
"a",
|
||||
" a ",
|
||||
" a ",
|
||||
" a b ",
|
||||
"\ta\tb\t",
|
||||
"\t\ta\t\t",
|
||||
"\ra\r",
|
||||
"\na\n"
|
||||
)
|
||||
|
||||
for (example in examples) {
|
||||
assertEquals(example.trim(), example.trimTrailing().trimLeading())
|
||||
assertEquals(example.trim(), example.trimLeading().trimTrailing())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user