在 Java 中的索引之间替换字符串的一部分 [已关闭]

2022-09-01 00:50:21

假设我有字符串 。我知道我想替换字符串的索引3-5。(4、5 和 6)。请记住,替换可能不是3个字符,我可能希望以.123456789123foobar789

最好的方法是什么?


答案 1

请尝试以下代码。在StringBuffer的帮助下,您可以进行替换。StringBuffer 取代 java docs

public static void main(String[] args) {

        StringBuffer buf = new StringBuffer("123456789");

        int start = 3;
        int end = 6;
        buf.replace(start, end, "foobar"); 
        System.out.println(buf);

    }

}

运行上面的程序后,下面的程序将被放出来。

123foobar789

演示


答案 2

首先,你不能做1,因为a在java中是不可变的。String

但是,您可以使用 String#substring() 方法(例如)创建具有所需值的新 String 对象:

String s = "123456789";
String newString = s.substring(0, 3) + "foobar" + s.substring(3+3);
System.out.println(newString);

如果您确实想有效地实现它,则可以避免创建连接和方法使用的一些中间字符串。substring()

String s = "123456789";
StringBuilder sb = new StringBuilder();
char[] buff = s.toCharArray();
sb.append(buff , 0, 3).append("foobar");
sb.append(buff,3+3,buff.length -(3+3));
System.out.println(sb.toString());

但是,如果没有在非常紧密的循环中完成 - 您可能应该忽略它,并坚持使用第一个更具可读性的解决方案。


(1)反正不容易,可以用反射来做——但应该避免。