From 28c8b06344e2882d632003e5a049ae942624ca8d Mon Sep 17 00:00:00 2001 From: Daniel Penkin Date: Fri, 13 Apr 2012 21:21:17 +0400 Subject: [PATCH 1/3] Added String.split(Char) --- libraries/stdlib/src/kotlin/Strings.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/stdlib/src/kotlin/Strings.kt b/libraries/stdlib/src/kotlin/Strings.kt index e1519a90928..65320efde8a 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() From a2f27496aa7e451d7dac20e3424426b912f707fa Mon Sep 17 00:00:00 2001 From: Daniel Penkin Date: Fri, 13 Apr 2012 21:29:30 +0400 Subject: [PATCH 2/3] Added test for String.split(Char) --- libraries/stdlib/test/StringTest.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libraries/stdlib/test/StringTest.kt b/libraries/stdlib/test/StringTest.kt index cf11b34702a..f12c7a89185 100644 --- a/libraries/stdlib/test/StringTest.kt +++ b/libraries/stdlib/test/StringTest.kt @@ -46,4 +46,18 @@ class StringTest() : TestCase() { assertEquals(77.toLong(), "77".toLong()) } + 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]) + } + } From a947d392d4a0b7e1d6b4bc9ea20746ff16c574b3 Mon Sep 17 00:00:00 2001 From: Daniel Penkin Date: Fri, 13 Apr 2012 22:01:16 +0400 Subject: [PATCH 3/3] Added startsWith(Char) and endsWith(Char) for String --- libraries/stdlib/src/kotlin/Strings.kt | 4 ++++ libraries/stdlib/test/StringTest.kt | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/libraries/stdlib/src/kotlin/Strings.kt b/libraries/stdlib/src/kotlin/Strings.kt index 65320efde8a..422d023b5bd 100644 --- a/libraries/stdlib/src/kotlin/Strings.kt +++ b/libraries/stdlib/src/kotlin/Strings.kt @@ -70,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() diff --git a/libraries/stdlib/test/StringTest.kt b/libraries/stdlib/test/StringTest.kt index f12c7a89185..33741d058f9 100644 --- a/libraries/stdlib/test/StringTest.kt +++ b/libraries/stdlib/test/StringTest.kt @@ -60,4 +60,16 @@ class StringTest() : TestCase() { assertEquals(s, list[0]) } + fun testStartsWithChar() { + assertTrue("abcd".startsWith('a')) + assertFalse("abcd".startsWith('b')) + assertFalse("".startsWith('a')) + } + + fun testEndsWithChar() { + assertTrue("abcd".endsWith('d')) + assertFalse("abcd".endsWith('b')) + assertFalse("".endsWith('a')) + } + }