Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Влад Соколов Знаток (293), на голосовании 7 лет назад
В программе необходимо заменить один символ в строке. Пробовал методом replace(char, char), но там надо указать сам заменяемый символ, а мне нужно именно по индексу. На одном сайте нашел replace(int, int, string), который должен заменять строку начиная с первого индекса до последнего входной строкой, но подобная штука у меня не сработала. Можете ли подсказать рабочий метод? Программирую на Java
Голосование за лучший ответ
asia4 Азия Гуру (3565) 7 лет назад
Метод в лоб:
String s - это строка, в которой надо заменить символ. Пусть надо заменить на '.' символ под индексом 3.
Тогда вот пара способов:
№1
s = s.subString(0,3) + "." + s.subString(3+1);
№2
char[] c = s.toCharArray();
c[3] = '.';
s = new String(c);

Первый способ короче, но, мне кажется, ресурсов больше тратит. Ведь в 1 способе создаётся 3 новых объекта String. А во втором 1 объект char и 1 объект String.

По результатам тестов 2 способ работает в 3 с половиной раза быстрее, чем первый.
Дима Сигида Мастер (2212) 7 лет назад
char[] string = text.toCharArray(); // Делаем из строки массив
string[index] = yourCharacter; // Изменяем символ строки используя индекс
text = new String(string); // Превращаем массив символов в строку и даем значение уже имеющейся
Похожие вопросы