替换StringBuffer中的单个字符

时间:2014-11-20 22:37:31

标签: java

我试图取代个人' a'亚马逊'中的角色通过在Java中使用 .replace 方法。

我知道如何使用Strings来做到这一点,但是当我使用StringBuffers下面的代码时,我得到了一个' Amaazon'代替。

有没有人知道如何替换StringBuffer中的单个字符?

    public class Hello {

    public static void main(String argv[]) {
    StringBuffer str1 = new StringBuffer("Amazon");
    String str = new String("Rainforest");
    int a = str.indexOf('o',2);
    StringBuffer str2 = str1.replace(2, 2, "a");
    System.out.println(a);
    System.out.println(str2);
    } 
} 

通过答案管理找到正确的方法,所以我想我发布了更正后的代码:

public class Hello {

public static void main(String argv[]) {
StringBuffer str1 = new StringBuffer("Amazon");
String str = new String("Rainforest");
int a = str.indexOf('o',2);
StringBuffer str2 = str1.replace(0, 1, "b");
System.out.println(a);
System.out.println(str2);
} 

}

获得" bmazon"

的输出

感谢回答者!

1 个答案:

答案 0 :(得分:2)

这是一个错误的错误。 replace(...)的前两个参数是要替换的子字符串的起始索引,包含,以及要替换的子字符串的结尾,独占。通过对两者使用相同的值,您实际上已经#34;替换"索引1和2之间没有任何内容。这种表达范围的包容性/排他性方式非常普遍。