Советы по проблеме java.lang.String.replace?
Я хотел бы заменить "." по "," в строке String/double, которую я хочу записать в файл.
Используя следующий код Java
double myDouble = myObject.getDoubleMethod(); // returns 38.1882352941176
System.out.println(myDouble);
String myDoubleString = "" + myDouble;
System.out.println(myDoubleString);
myDoubleString.replace(".", ",");
System.out.println(myDoubleString);
myDoubleString.replace('.', ',');
System.out.println(myDoubleString);
Я получаю следующий вывод
38.1882352941176
38.1882352941176
38.1882352941176
38.1882352941176
Почему замена не делает то, что она должна делать? Я ожидаю, что последние две строки содержат ",".
Должен ли я делать/использовать что-то еще? Предложения?
Ответы
Ответ 1
Вам нужно присвоить новое значение переменной.
double myDouble = myObject.getDoubleMethod(); // returns 38.1882352941176
System.out.println(myDouble);
String myDoubleString = "" + myDouble;
System.out.println(myDoubleString);
myDoubleString = myDoubleString.replace(".", ",");
System.out.println(myDoubleString);
myDoubleString = myDoubleString.replace('.', ',');
System.out.println(myDoubleString);
Ответ 2
Исходная строка не изменяется. Вызов возвращает измененную строку, поэтому вам нужно будет сделать это:
String modded = myDoubleString.replace(".",",");
System.out.println( modded );
Ответ 3
Чем больше вопрос, почему бы не использовать DecimalFormat
вместо того, чтобы заменить String?
Ответ 4
replace
возвращает новую строку (поскольку String неизменна в Java):
String newString = myDoubleString.replace(".", ",");
Ответ 5
Всегда помните, строки неизменяемы. Они не могут измениться. Если вы вызываете метод String, который каким-то образом его изменяет, вам нужно сохранить возвращаемое значение. Всегда.
Я помню, как вы узнали об этом больше, чем несколько раз в Uni:)