Looks pretty heinous though :smile: (accounting fo...
# getting-started
u
Looks pretty heinous though 😄 (accounting for all boundary values...)
Copy code
fun String.partitionAfterLast(character: Char, defaultFirst: String = "", defaultLast: String = ""): Pair<String, String> {
    if (isEmpty()) return Pair(defaultFirst, defaultLast)
    val lastIndexOfChar = lastIndexOf(character)
    val before =
            if (lastIndexOfChar > -1)
                if (lastIndexOfChar == 0) defaultFirst
                else substring(0, lastIndexOfChar)
            else this
    val after =
            if (lastIndexOfChar > -1)
                if (lastIndexOfChar == lastIndex) defaultLast
                else substring(lastIndexOfChar + 1, length)
            else defaultLast
    return Pair(before, after)
}