Вместо того чтобы использовать метод String.replace
, я бы предложил использовать метод String.substring
, чтобы получить символы, исключая первую и последнюю букву, а затем объединить beginning
и end
символов.
Кроме того, метод String.replace
заменяет все вхождения указанного символа и возвращает новый String
с указанными заменами. Так как в приведенном выше коде возврат не обнаружен, вызовы String.replace
на самом деле ничего не делают.
Это связано с тем, что String
в Java является неизменяемым, поэтому метод replace
не может вносить никаких изменений в исходный String
, который в данном случае является переменной str
.
Также добавим, что этот подход не будет хорошо работать с String
s, имеющими длину 1. При использовании подхода, описанного выше, вызов String.substring
с источником String
, имеющим длину 1, вызовет StringIndexOutOfBoundsException
, так что об этом также нужно будет позаботиться как об особом случае, если будет использован вышеуказанный подход.
Честно говоря, подход, представленный в ответе indyK1ng , где char[]
получается из String
и выполняет простой обмен начальными и конечными символами, а затем String
из Модифицированный char[]
начинает звучать гораздо приятнее.