我想替换另一个字符串中的字符串,但只替换最后找到的字符串.例如:

"ONE, TWO, THREE, FOUR".replaceLast(",", " &") // Outputs: "ONE, TWO, THREE & FOUR"

推荐答案

要只替换Kotlin字符串中最后一个出现的子字符串,可以使用扩展函数.下面是一个完成此任务的Kotlin扩展函数:

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"
    }
}

Java相关问答推荐

基于仅存在于父级中的字段查询子文档?

使用Apache Poi MQLSlideShow,在XSLFTable表中,我们可以在文本段落后面的每个单元格中包含圆角矩形吗?

Java 22模式匹配不适用于记录模式匹配.给出汇编问题

如何审查Java dtos中的自定义注释字段?

使用包私有构造函数强制子类Java类

Java模式匹配记录

JDK22执行repackage of goal org. springframework. boot:spring—boot—maven—plugin:3.2.3:repackage failed:unsupported class file major version 66—>

Java inline Double条件和值解装箱崩溃

Jakarta CDI强制bean构造/注册遗留事件侦听器

JDK 21-为什么线程局部随机S nextInt不直接用Super.nextInt实现?

基于接口的投影、原生查询和枚举

try 使用类来包含JSON响应

Spring动态反序列化JSON可以是列表,也可以只是一个对象

何时调用密封层次 struct 的switch 中的默认情况

Oracle中从JSON中提取和插入数据

如何对存储为字符串的大数字数组进行排序?

Java中的一个错误';s stdlib SocksSocketImpl?

如何使用外部函数从Java中获取C++ struct 的返回值&;内存API

AspectJ编织外部依赖代码,重新打包jar并强制依赖用户使用它

为什么 Random() 的行为不符合预期?