I’d like to replace String from another String, but only the last found String. For example:
"ONE, TWO, THREE, FOUR".replaceLast(",", " &") // Outputs: "ONE, TWO, THREE & FOUR"
>Solution :
To replace only the last occurrence of a substring in a Kotlin string, you can use an extension function. Here’s a Kotlin extension function that accomplishes this:
Kotlin:
fun String.replaceLast(oldValue: String, newValue: String): String {
val lastIndex = lastIndexOf(oldValue)
if (lastIndex == -1) {
return this
}
val prefix = substring(0, lastIndex)
val suffix = substring(lastIndex + oldValue.length)
return "$prefix$newValue$suffix"
}
fun main() {
val input = "ONE, TWO, THREE, FOUR"
val result = input.replaceLast(",", " &")
println(result) // Output: "ONE, TWO, THREE & FOUR"
}
Java:
public class Main {
public static String replaceLast(String input, String oldValue, String newValue) {
int lastIndex = input.lastIndexOf(oldValue);
if (lastIndex == -1) {
return input;
}
String prefix = input.substring(0, lastIndex);
String suffix = input.substring(lastIndex + oldValue.length());
return prefix + newValue + suffix;
}
public static void main(String[] args) {
String input = "ONE, TWO, THREE, FOUR";
String result = replaceLast(input, ",", " &");
System.out.println(result); // Output: "ONE, TWO, THREE & FOUR"
}
}