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

CL2*_*L23 15 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);
Run Code Online (Sandbox Code Playgroud)

我得到以下输出

38.1882352941176
38.1882352941176
38.1882352941176
38.1882352941176
Run Code Online (Sandbox Code Playgroud)

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

我必须做/使用别的东西吗?建议?

Alb*_*oPL 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);
Run Code Online (Sandbox Code Playgroud)

  • 它返回一个新字符串的原因是字符串在Java中是不可变的. (6认同)
  • 像往常一样问题出在计算机前面;-) Thx (4认同)

Chr*_*sel 11

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

String modded = myDoubleString.replace(".",",");
System.out.println( modded );
Run Code Online (Sandbox Code Playgroud)


小智 10

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


dfa*_*dfa 5

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

String newString = myDoubleString.replace(".", ",");
Run Code Online (Sandbox Code Playgroud)