假设我有字符串
最佳方法是什么?
123456789
。我知道我想要替换字符串的索引3-5(即4、5和6)。请注意,替换的内容可能不是3个字符,我可能最终想要的结果是123foobar789
。最佳方法是什么?
尝试以下代码。借助StringBuffer你可以进行替换。StringBuffer replace 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
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) 不容易,但可以使用reflection来实现 - 但应该避免这样做。
StringBuffer.replace
方法。 - TomreplaceRange(int start, int length, String replacement)
方法会返回更新后的字符串,其中范围已被替换。 - Josh M.如果给定的子字符串没有重复,则尝试这样做。
String s ="123456789";
s = s.replace(s.substring(3,6), "foobar");
如果给定的子字符串重复出现,则可以尝试这种方法。
String s ="123123123";
s= s.substring(0,3) + "foobar" + s.substring(6,s.length());
s="123123123"
会发生什么? - amit