diff --git a/kotlin-utils/src/main/kotlin/xyz/lbres/kotlinutils/string/ext/StringExt.kt b/kotlin-utils/src/main/kotlin/xyz/lbres/kotlinutils/string/ext/StringExt.kt index 19d7912c..e2076639 100644 --- a/kotlin-utils/src/main/kotlin/xyz/lbres/kotlinutils/string/ext/StringExt.kt +++ b/kotlin-utils/src/main/kotlin/xyz/lbres/kotlinutils/string/ext/StringExt.kt @@ -9,6 +9,14 @@ package xyz.lbres.kotlinutils.string.ext */ fun String.substringTo(index: Int): String = substring(0, index) +/** + * Get number of characters matching a specific value + * + * @param element [Char]: value to match + * @return [Int]: number of characters with the given value + */ +fun String.countElement(element: Char) = this.count { it == element } + /** * Determine if string can be parsed as Int * diff --git a/kotlin-utils/src/test/kotlin/xyz/lbres/kotlinutils/string/ext/StringExtTest.kt b/kotlin-utils/src/test/kotlin/xyz/lbres/kotlinutils/string/ext/StringExtTest.kt index d54ac481..68c2be85 100644 --- a/kotlin-utils/src/test/kotlin/xyz/lbres/kotlinutils/string/ext/StringExtTest.kt +++ b/kotlin-utils/src/test/kotlin/xyz/lbres/kotlinutils/string/ext/StringExtTest.kt @@ -33,6 +33,27 @@ class StringExtTest { assertEquals(expected, string.substringTo(int)) } + @Test + fun testCountElement() { + var string = "" + assertEquals(0, string.countElement('-')) + assertEquals(0, string.countElement('a')) + + string = "hello world" + assertEquals(0, string.countElement('a')) + assertEquals(1, string.countElement('e')) + assertEquals(3, string.countElement('l')) + + string = "%#\\% \n \\.$?'' \" 919" + assertEquals(6, string.countElement(' ')) + assertEquals(2, string.countElement('\\')) + assertEquals(2, string.countElement('\'')) + assertEquals(1, string.countElement('"')) + assertEquals(2, string.countElement('9')) + assertEquals(1, string.countElement('$')) + assertEquals(1, string.countElement('\n')) + } + @Test fun testIsInt() { // int