Minor in stdlib: move String.trimLeading and String.trimTrailing to common place.
This commit is contained in:
@@ -24,6 +24,26 @@ public fun String.trimTrailing(postfix: String): String {
|
|||||||
return answer
|
return answer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Returns a new String containing the everything but the leading whitespace characters */
|
||||||
|
public 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 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
|
||||||
|
}
|
||||||
|
|
||||||
/** Returns true if the string is not null and not empty */
|
/** Returns true if the string is not null and not empty */
|
||||||
public fun String?.isNotEmpty(): Boolean = this != null && this.length() > 0
|
public fun String?.isNotEmpty(): Boolean = this != null && this.length() > 0
|
||||||
|
|
||||||
|
|||||||
@@ -274,26 +274,6 @@ public inline fun <T : Appendable> String.takeWhileTo(result: T, predicate: (Cha
|
|||||||
deprecated("Use toList() instead.")
|
deprecated("Use toList() instead.")
|
||||||
public fun String.toCollection(): Collection<Char> = toCollection(ArrayList<Char>(this.length()))
|
public fun String.toCollection(): Collection<Char> = toCollection(ArrayList<Char>(this.length()))
|
||||||
|
|
||||||
/** Returns a new String containing the everything but the leading whitespace characters */
|
|
||||||
public 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 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
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replaces every *regexp* occurence in the text with the value retruned by the given function *body* that can handle
|
* Replaces every *regexp* occurence in the text with the value retruned by the given function *body* that can handle
|
||||||
* particular occurance using [[MatchResult]] provided.
|
* particular occurance using [[MatchResult]] provided.
|
||||||
|
|||||||
@@ -281,54 +281,6 @@ class StringJVMTest {
|
|||||||
assertEquals("1 234 567,890", "%,.3f".format(Locale("fr"), 1234567.890))
|
assertEquals("1 234 567,890", "%,.3f".format(Locale("fr"), 1234567.890))
|
||||||
}
|
}
|
||||||
|
|
||||||
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())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
test fun toByteArrayEncodings() {
|
test fun toByteArrayEncodings() {
|
||||||
val s = "hello"
|
val s = "hello"
|
||||||
val defaultCharset = java.nio.charset.Charset.defaultCharset()!!
|
val defaultCharset = java.nio.charset.Charset.defaultCharset()!!
|
||||||
|
|||||||
@@ -134,4 +134,52 @@ class StringTest {
|
|||||||
sum += (c.toInt() - '0'.toInt())
|
sum += (c.toInt() - '0'.toInt())
|
||||||
assertTrue(sum == 14)
|
assertTrue(sum == 14)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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