2012-07-23 59 views
1
boolean b1 = false; 
boolean b2 = true; 


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

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

什么都不会被替换。我仍然得到“虚假的真实”。 我想将String的所有“false”和“true”替换为“f”和“t”。无法将字符串替换为另一个字符(布尔值) - Java

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

+0

请注意'String'在Java中是不可变的。 – Lion 2012-07-23 15:13:35

回答

5

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

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

所以应该发出的呼吁作为

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

更多关于不变性是here

7

字符串是不可变的。当你对字符串进行任何操作时,它会创建新的字符串。您需要将结果分配到基准再次

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

4

当你calls.replaceAll(“假”,“F”),您实际上并不突变字符串的。您需要在值赋给就像这样:

s = s.replaceAll("false", "f"); 
2
System.out.println(s.replaceAll("false", "f ").replaceAll("true", "t ")); 
2

你需要把它写这样的:

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

字符串是不可改变所以一旦宣告他们,他们不能被改变。调用此s.replaceAll("false", "f");会创建一个新的字符串对象,其中"f"而不是"false"。既然你没有把这个新对象赋值给一个变量,那么新的字符串基本上就会丢失,而你的左边就是原始字符串。

0

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

相关问题