如何在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,",""); <-----
现在价值将被保存为平面=“地球,水星”;