Заменить символ по определенному индексу в строке?
Я пытаюсь заменить символ по определенному индексу в строке.
Что я делаю, так это:
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 с изменением.
String
Если вы хотите манипулировать строкой, рассмотрите StringBuilder или StringBuffer на случай, если вам требуется потокобезопасность.
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); }