如何在Java中添加StringBuilder的反义?

与此相反的是:

savedPlanets.append(planet.getDisplayName()+","); 

我有一个列表,每次用户点击一个复选框时我都会添加行星的名称,如果清除该复选框,我想从savedPlanets中删除该名称

你可以这样做:

  savedPlanets.replace(planet.getDisplayName(),""); 

理想情况下,我会做一个如下的解决方案:

 Set selectedPlanets = new HashSet(); selectedPlanets.add(planet.getDisplayName()); // Whenever a planet is selected selectedPlanets.remove(planet.getDisplayName()); // Whenever a planet is removed // Prepare a String with all planets StringBuilder savedPlanets = new StringBuilder(""); for(String planetName : selectedPlanets ){ savedPlanets.append(planetName).append(","); } // Removing , from the end if any if(savedPlanets.toString().endsWith(",")) finalValue = savedPlanets.substring(0, savedPlanets.length()-1); // finalValue is what you are looking for 

我每次都会重建字符串,只包括你想要包含的元素。

例如

 Set planets = ... StringBuilder sb = new StringBuilder(); String sep = ""; for(Planet planet: planets) { sb.append(sep).append(planet.getDisplayName()); sep = ","; } String planetNames = sb.toString(); 

我认为你正在使用StringBuffer或类似的东西。 在这种情况下,这不是一个好的解决方案,我建议你使用Set。 http://docs.oracle.com/javase/6/docs/api/java/util/Set.html

像这样实现它:

 Set planets = new HashSet(); planets.add("a"); planets.add("b"); planets.remove("a"); 

假设… StringBuffer savedPlanets …

APPEND: savedPlanets.append(planet.getDisplayName()+",");

savedPlanets.replaceAll(planet.getDisplayName()+",",""); OF APPEND: savedPlanets.replaceAll(planet.getDisplayName()+",","");

EX:

 savedPlanets.append("Earth,"); savedPlanets.append("Mercury,"); savedPlanets.append("Venus,"); 

now savedPlanetes =“地球,水星,金星”;

然后

 savedPlanets.replaceAll("Venus,",""); <----- 

现在价值将被保存平面=“地球,水星”;