java.lang.String.replace问题的提示?

时间:2009-07-22 17:29:21

标签: java 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

为什么不替换做它应该做的事情?我希望最后两行包含“,”。

我必须做/使用其他东西吗?建议?

5 个答案:

答案 0 :(得分:20)

您需要将新值分配回变量。

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);

答案 1 :(得分:11)

未修改原始字符串。该调用返回修改后的字符串,因此您需要执行以下操作:

String modded = myDoubleString.replace(".",",");
System.out.println( modded );

答案 2 :(得分:10)

更大的问题是为什么不使用DecimalFormat而不是做String替换?

答案 3 :(得分:5)

replace 返回一个新字符串(因为String在Java中是不可变的):

String newString = myDoubleString.replace(".", ",");

答案 4 :(得分:3)

永远记住,字符串是不可变的。他们无法改变。如果您正在调用以某种方式更改它的String方法,则需要存储返回值。总是

我记得在Uni中多次被发现:)