import java.util.* fun transformation(input: String, findRegex: String, replaceRegex: String): String = input.replace("""\D+""".toRegex(), "").replace(findRegex.toRegex(), { it.groupValues[1].toString() + (if (!it.groupValues[2].isNullOrEmpty()) ".${it.groupValues[2].toString()}" else "") + (if (!it.groupValues[3].isNullOrEmpty()) ".${it.groupValues[3].toString()}" else "") + (if (!it.groupValues[4].isNullOrEmpty()) "-${it.groupValues[4].toString()}" else "") }) fun main(args: Array) { val input = "0112121234" // 011.212.123-4 // val input = "011" // 011 // val input = "01121212" // 011.212.12 // val input = "011212" // 011.212 // val input = "01121" // 011.21 // val input = "0112" // 011.2 val findRegex = """^(\d{3})(\d{1,3})?(\d{1,3})?(\d{1,2})?$""" val replaceRegex = """$1.$2.$3-$4""" val result = transformation(input, findRegex, replaceRegex) println(result) }