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
为什么不替换做它应该做的事情? 我希望最后两行包含一个“,”。
我必须做/使用其他东西吗? 建议?
您需要将新值分配回变量。
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 );
更大的问题是为什么不使用DecimalFormat
而不是做String替换?
replace
返回一个新的String (因为String在Java中是不可变的):
String newString = myDoubleString.replace(".", ",");
永远记住,字符串是不可变的。 他们无法改变。 如果您正在调用以某种方式更改它的String方法,则需要存储返回值。 总是。
我记得在Uni上多次被发现这件事:)
- 配置Apache HttpClient通过代理/负载均衡器访问服务(覆盖主机头)
- 获得唯一的正则表达式匹配结果(不使用地图或列表)
- 抛出exception来控制流程 – 代码味道?
- 如何计算java中音频信号的电平/幅度/ db?
- 围绕Java操作应用超时控制
- 为什么赋值’int constant – > byte variable’有效,但’long constant – > int variable’不是?
- 从2或4个字节转换为有符号/无符号short / int
- 观察者模式适合文件监控?
- Eclipse,AppEngine:java.lang.RuntimeException:无法获取System Java Compiler。 请使用JDK,而不是JRE