Add isEmpty, isBlank methods and their nullable and negating couterparts.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package kotlin
|
||||
|
||||
import java.util.NoSuchElementException
|
||||
import kotlin.platform.platformName
|
||||
|
||||
/** Returns the string with leading and trailing text matching the given string removed */
|
||||
deprecated("Use removeEnclosing(text, text) or removePrefix(text).removeSuffix(text)")
|
||||
@@ -146,8 +147,49 @@ public fun String.padEnd(length: Int, padChar: Char = ' '): String {
|
||||
}
|
||||
|
||||
/** Returns true if the string is not null and not empty */
|
||||
deprecated("Use isNotNullOrEmpty for nullable strings.")
|
||||
platformName("isNotEmptyNullable")
|
||||
public fun String?.isNotEmpty(): Boolean = this != null && this.length() > 0
|
||||
|
||||
/**
|
||||
* Return `true` if this nullable string is either null or empty.
|
||||
*/
|
||||
public fun String?.isNullOrEmpty(): Boolean = this == null || this.length() == 0
|
||||
|
||||
/**
|
||||
* Return `true` if this nullable string is neither null nor empty.
|
||||
*/
|
||||
public fun String?.isNotNullOrEmpty(): Boolean = this != null && this.length() > 0
|
||||
|
||||
/**
|
||||
* Returns `true` if this string is empty (contains no characters).
|
||||
*/
|
||||
public fun String.isEmpty(): Boolean = length() == 0
|
||||
|
||||
/**
|
||||
* Returns `true` if this string is not empty.
|
||||
*/
|
||||
public fun String.isNotEmpty(): Boolean = length() > 0
|
||||
|
||||
// implemented differently in JVM and JS
|
||||
//public fun String.isBlank(): Boolean = length() == 0 || all { it.isWhitespace() }
|
||||
|
||||
|
||||
/**
|
||||
* Returns `true` if this string is not empty and contains some characters except of whitespace characters.
|
||||
*/
|
||||
public fun String.isNotBlank(): Boolean = !isBlank()
|
||||
|
||||
/**
|
||||
* Returns `true` if this nullable string is either null or empty or consists solely of whitespace characters.
|
||||
*/
|
||||
public fun String?.isNullOrBlank(): Boolean = this == null || this.isBlank()
|
||||
|
||||
/**
|
||||
* Returns `true` if this nullable string is neither null nor empty, and contains some characters except of whitespace characters.
|
||||
*/
|
||||
public fun String?.isNotNullOrBlank(): Boolean = this != null && !this.isBlank()
|
||||
|
||||
/**
|
||||
* Iterator for characters of given CharSequence
|
||||
*/
|
||||
|
||||
@@ -275,10 +275,9 @@ public fun String.getChars(srcBegin: Int, srcEnd: Int, dst: CharArray, dstBegin:
|
||||
public fun String.intern(): String = (this as java.lang.String).intern()
|
||||
|
||||
/**
|
||||
* Returns `true` if this string is empty (contains no characters).
|
||||
* Returns `true` if this string is empty or consists solely of whitespace characters.
|
||||
*/
|
||||
public fun String.isEmpty(): Boolean = (this as java.lang.String).isEmpty()
|
||||
|
||||
public fun String.isBlank(): Boolean = length() == 0 || all { it.isWhitespace() }
|
||||
|
||||
/**
|
||||
* Returns `true` if this string matches the given regular expression.
|
||||
|
||||
@@ -3,8 +3,32 @@ package test.text
|
||||
import kotlin.test.*
|
||||
import org.junit.Test as test
|
||||
|
||||
// could not be local inside isEmptyAndBlank, because non-toplevel declarations is not yet supported for JS
|
||||
class IsEmptyCase(val value: String?, val isNull: Boolean = false, val isEmpty: Boolean = false, val isBlank: Boolean = false)
|
||||
|
||||
class StringTest {
|
||||
|
||||
test fun isEmptyAndBlank() {
|
||||
|
||||
val cases = listOf(
|
||||
IsEmptyCase(null, isNull = true),
|
||||
IsEmptyCase("", isEmpty = true, isBlank = true),
|
||||
IsEmptyCase(" \r\n\t\u00A0", isBlank = true),
|
||||
IsEmptyCase(" Some ")
|
||||
)
|
||||
|
||||
for (case in cases) {
|
||||
assertEquals(case.isNull || case.isEmpty, case.value.isNullOrEmpty(), "failed for case '${case.value}'")
|
||||
assertEquals(case.isNull || case.isBlank, case.value.isNullOrBlank(), "failed for case '${case.value}'")
|
||||
if (case.value != null)
|
||||
{
|
||||
assertEquals(case.isEmpty, case.value.isEmpty(), "failed for case '${case.value}'")
|
||||
assertEquals(case.isBlank, case.value.isBlank(), "failed for case '${case.value}'")
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
test fun startsWithString() {
|
||||
assertTrue("abcd".startsWith("ab"))
|
||||
assertTrue("abcd".startsWith("abcd"))
|
||||
|
||||
Reference in New Issue
Block a user