1
boolean b1 = false;
boolean b2 = true;


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

s.replaceAll("false", "f");
s.replaceAll("true", "t");

什么都没有被替换。我仍然得到“假真”。我想将字符串的所有“false”和“true”替换为“f”和“t”。

我很确定我没有以正确的方式做这件事,这就是为什么我需要你的帮助,我们将不胜感激。

4

6 回答 6

8

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

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

于 2012-07-23T15:09:44.713 回答
6

Java中的String是不可变的,这意味着String对象的值一旦创建就不会改变。

因此,方法 replaceAll()(或 String 类中的几乎所有其他方法)旨在返回一个新字符串,而不是修改旧字符串。

所以调用应该是

s = s.replaceAll("false", "f");

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

于 2012-07-23T15:14:47.460 回答
5

当您调用.replaceAll("false", "f") 时,您实际上并没有改变字符串。您需要将该值分配给 s ,如下所示:

s = s.replaceAll("false", "f");
于 2012-07-23T15:10:38.993 回答
3
System.out.println(s.replaceAll("false", "f ").replaceAll("true", "t "));
于 2012-07-23T15:12:40.960 回答
2

你需要这样写:

 s =  s.replaceAll("false", "f");
 s =  s.replaceAll("true", "t");

字符串是不可变的,因此一旦您声明它们,它们就无法更改。调用它s.replaceAll("false", "f");会创建一个新的字符串对象,"f"而不是"false"。由于您没有将这个新对象分配给变量,因此新字符串基本上丢失了,而您的左边是原始字符串。

于 2012-07-23T15:14:38.820 回答
1

首先,你需要意识到它String是不可变的。这意味着它的内容不能改变。为了获得 replaceAll() 方法的结果,您需要将返回值分配给 a String

于 2012-07-23T15:24:51.910 回答