不能将字符串替换为另一个字符串(布尔值) - Java

use*_*106 1 java string boolean replaceall

boolean b1 = false;
boolean b2 = true;


String s = new String(b1+""+b2);

s.replaceAll("false", "f");
s.replaceAll("true", "t");
Run Code Online (Sandbox Code Playgroud)

什么都没有被取代.我仍然得到"虚假的真实".我想将String的所有"false"和"true"替换为"f"和"t".

我很确定我没有以正确的方式做到这一点,这就是为什么我需要你的帮助,我将不胜感激.

kos*_*osa 8

字符串是不可变的.当您对字符串执行任何操作时,它会创建新字符串.您需要再次将结果分配给引用

应该是这样的 s = s.replaceAll("false", "f");


Pra*_*ati 6

java中的字符串是不可变的,这意味着,一旦创建,String对象的值就不会改变.

因此,方法replaceAll()(或String类中的几乎所有其他方法)都被设计为返回一个新字符串而不是修改旧字符串.

因此呼叫应该是

s = s.replaceAll("false", "f");
Run Code Online (Sandbox Code Playgroud)

更多关于不变性的信息就在这里


jra*_*rad 5

当你调用.replaceAll("false","f")时,你根本就没有改变String.您需要将该值分配给s,如下所示:

s = s.replaceAll("false", "f");
Run Code Online (Sandbox Code Playgroud)