import java.util.*
val pattern = """%NAME(\d+)%""".toRegex()
fun String.replaceWithNames(names: List<String>): String {
return pattern.replace(this) { m ->
names.getOrNull(m.groupValues[1].toInt()) ?: m.value
}
}
fun main(args: Array<String>) {
val lst = listOf("Bob", "Alice", "Tom")
println( "Lorem ipsum %NAME0% dolor sit amet %NAME1%, consectetur %NAME2% adipiscing elit. Wrong %NAME11%".replaceWithNames(lst) )
}
aW1wb3J0IGphdmEudXRpbC4qCiAKdmFsIHBhdHRlcm4gPSAiIiIlTkFNRShcZCspJSIiIi50b1JlZ2V4KCkKZnVuIFN0cmluZy5yZXBsYWNlV2l0aE5hbWVzKG5hbWVzOiBMaXN0PFN0cmluZz4pOiBTdHJpbmcgewogICAgcmV0dXJuIHBhdHRlcm4ucmVwbGFjZSh0aGlzKSB7IG0gLT4KICAgICAgICBuYW1lcy5nZXRPck51bGwobS5ncm91cFZhbHVlc1sxXS50b0ludCgpKSA/OiBtLnZhbHVlCiAgICB9Cn0KCmZ1biBtYWluKGFyZ3M6IEFycmF5PFN0cmluZz4pIHsKICAgIHZhbCBsc3QgPSBsaXN0T2YoIkJvYiIsICJBbGljZSIsICJUb20iKQogICAgcHJpbnRsbiggIkxvcmVtIGlwc3VtICVOQU1FMCUgZG9sb3Igc2l0IGFtZXQgJU5BTUUxJSwgY29uc2VjdGV0dXIgJU5BTUUyJSBhZGlwaXNjaW5nIGVsaXQuIFdyb25nICVOQU1FMTElIi5yZXBsYWNlV2l0aE5hbWVzKGxzdCkgKQp9