Вопрос-ответ

Replace a character at a specific index in a string?

Заменить символ по определенному индексу в строке?

Я пытаюсь заменить символ по определенному индексу в строке.

Что я делаю, так это:

String myName = "domanokz";
myName.charAt(4) = 'x';

Это выдает ошибку. Есть ли какой-либо метод для этого?

Переведено автоматически
Ответ 1

Строки неизменяемы в Java. Вы не можете их изменить.

Вам нужно создать новую строку с замененным символом.

String myName = "domanokz";
String newName = myName.substring(0,4)+'x'+myName.substring(5);

Или вы можете использовать StringBuilder:

StringBuilder myName = new StringBuilder("domanokz");
myName.setCharAt(4, 'x');

System.out.println(myName);
Ответ 2

Преобразуйте строку в символ [], замените букву индексом, затем преобразуйте массив обратно в строку.

String myName = "domanokz";
char[] myNameChars = myName.toCharArray();
myNameChars[4] = 'x';
myName = String.valueOf(myNameChars);
Ответ 3

String это неизменяемый класс в java. Любой метод, который, по-видимому, изменяет его, всегда возвращает новый объект string с изменением.

Если вы хотите манипулировать строкой, рассмотрите StringBuilder или StringBuffer на случай, если вам требуется потокобезопасность.

Ответ 4

Я согласен с Петром Ивановым, но лучше всего, если мы реализуем следующим образом:

public String replace(String str, int index, char replace){     
if(str==null){
return str;
}else if(index<0 || index>=str.length()){
return str;
}
char[] chars = str.toCharArray();
chars[index] = replace;
return String.valueOf(chars);
}
java string