diff --git a/libraries/stdlib/src/kotlin/Strings.kt b/libraries/stdlib/src/kotlin/Strings.kt index 81945388444..901289a101a 100644 --- a/libraries/stdlib/src/kotlin/Strings.kt +++ b/libraries/stdlib/src/kotlin/Strings.kt @@ -60,6 +60,8 @@ public inline fun String.format(format : String, vararg args : Any?) : String = public inline fun String.split(regex : String) : Array = (this as java.lang.String).split(regex) as Array +public inline fun String.split(ch : Char) : Array = (this as java.lang.String).split(java.util.regex.Pattern.quote(ch.toString())) as Array + public inline fun String.substring(beginIndex : Int) : String = (this as java.lang.String).substring(beginIndex).sure() public inline fun String.substring(beginIndex : Int, endIndex : Int) : String = (this as java.lang.String).substring(beginIndex, endIndex).sure() @@ -68,10 +70,14 @@ public inline fun String.startsWith(prefix: String) : Boolean = (this as java.la public inline fun String.startsWith(prefix: String, toffset: Int) : Boolean = (this as java.lang.String).startsWith(prefix, toffset) +public inline fun String.startsWith(ch: Char) : Boolean = (this as java.lang.String).startsWith(ch.toString()) + public inline fun String.contains(seq: CharSequence) : Boolean = (this as java.lang.String).contains(seq) public inline fun String.endsWith(suffix: String) : Boolean = (this as java.lang.String).endsWith(suffix) +public inline fun String.endsWith(ch: Char) : Boolean = (this as java.lang.String).endsWith(ch.toString()) + inline val String.size : Int get() = length() @@ -226,4 +232,4 @@ public inline fun String.count(predicate: (Char) -> Boolean): Int { } } return answer -} \ No newline at end of file +} diff --git a/libraries/stdlib/test/StringTest.kt b/libraries/stdlib/test/StringTest.kt index 157a61a2851..f2db543a24c 100644 --- a/libraries/stdlib/test/StringTest.kt +++ b/libraries/stdlib/test/StringTest.kt @@ -52,4 +52,30 @@ class StringTest { assertEquals(3, whitespaceCount) } + test fun testSplitByChar() { + val s = "ab\n[|^$&\\]^cd" + var list = s.split('b'); + assertEquals(2, list.size) + assertEquals("a", list[0]) + assertEquals("\n[|^$&\\]^cd", list[1]) + list = s.split('^') + assertEquals(3, list.size) + assertEquals("cd", list[2]) + list = s.split('.') + assertEquals(1, list.size) + assertEquals(s, list[0]) + } + + test fun testStartsWithChar() { + assertTrue("abcd".startsWith('a')) + assertFalse("abcd".startsWith('b')) + assertFalse("".startsWith('a')) + } + + test fun testEndsWithChar() { + assertTrue("abcd".endsWith('d')) + assertFalse("abcd".endsWith('b')) + assertFalse("".endsWith('a')) + } + }