java.lang.String.replace问题的提示?
我想将要写入文件的字符串/双精度中的“.”替换为“.” 使用以下Java代码java.lang.String.replace问题的提示?,java,string,replace,Java,String,Replace,我想将要写入文件的字符串/双精度中的“.”替换为“.” 使用以下Java代码 double myDouble = myObject.getDoubleMethod(); // returns 38.1882352941176 System.out.println(myDouble); String myDoubleString = "" + myDouble; System.out.println(myDoubleString); myDoubleString.replace(".", ",
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
为什么replace不做它应该做的事情呢?我希望最后两行包含一个“,”
我必须做/使用其他东西吗?建议?您需要将新值赋回变量
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);
未修改原始字符串。调用将返回修改后的字符串,因此需要执行以下操作:
String modded = myDoubleString.replace(".",",");
System.out.println( modded );
replace
返回一个新字符串(因为字符串在Java中是不可变的):
永远记住,字符串是不可变的。他们不能改变。如果调用的字符串方法以某种方式对其进行更改,则需要存储返回值。总是
我记得我在Uni不止几次被这件事弄得不知所措:)更大的问题是为什么不使用代替字符串替换?这几年来让太多的Java新手绊倒了。我重新阅读了replace的文档,它清楚地以“返回一个新字符串…”开头;-)像往常一样,问题摆在计算机面前;-)它返回新字符串的原因是字符串在Java中是不可变的。这一点很好!你的回答超越了我的问题,但解决了我基本上遇到的问题。我不知道十进制,谢谢!但是您不需要引入
newString
,因为尽管String
对象是不可变的,但是可以更改对String
对象的引用(如果它们不是final
):
String newString = myDoubleString.replace(".", ",");