2014-11-20 2 views
0

Я пытаюсь заменить индивидуальный символ «a» в «Amazon» с помощью метода .replace на Java.Замена отдельных символов в StringBuffer

Я знаю, как это сделать со строками, но когда я использую код ниже с 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

Вы почти никогда не хотите использовать 'StringBuffer', вместо этого используйте' StringBuilder'. –

ответ

2

Это ошибка за один проход. Первые два параметра до replace(...) являются начальным индексом подстроки для замены, включительно и окончанием подстроки для замены, exclusive. Используя одно и то же значение для обоих, вы фактически «заменяете» ничто между индексами 1 и 2. Этот исключительный/эксклюзивный способ выражения диапазона чрезвычайно распространен.

+0

Можете ли вы также включить исправленный код в этот ответ? – CreationEdge

+0

Выложили мой исправленный код в вопрос, спасибо за ответ! –

+0

@James Если этот ответ решил вашу проблему, отметьте его как принятый. –

Смежные вопросы