What would be the opposite of:
savedPlanets.append(planet.getDisplayName()+\",\");
I have a list and I am adding the name of the planet every t
I would rebuilt the string each time, only including the element you want to include.
e.g.
Set<Planet> planets = ...
StringBuilder sb = new StringBuilder();
String sep = "";
for(Planet planet: planets) {
sb.append(sep).append(planet.getDisplayName());
sep = ",";
}
String planetNames = sb.toString();
I think you're using StringBuffer or something like that. It's not a good solution it this case, I would recommend you to use Set. http://docs.oracle.com/javase/6/docs/api/java/util/Set.html
Implement it like this:
Set planets = new HashSet();
planets.add("a");
planets.add("b");
planets.remove("a");
Assume... StringBuffer savedPlanets...
APPEND : savedPlanets.append(planet.getDisplayName()+",");
OPPOSITE OF APPEND : savedPlanets.replaceAll(planet.getDisplayName()+",","");
EX:
savedPlanets.append("Earth,");
savedPlanets.append("Mercury,");
savedPlanets.append("Venus,");
now savedPlanetes= "Earth,Mercury,Venus,";
then
savedPlanets.replaceAll("Venus,",""); <-----
now value will be savedPlanetes= "Earth,Mercury,";
You can do following:
savedPlanets.replace(planet.getDisplayName(),"");
Ideally I would do a solution like following:
Set<String> selectedPlanets = new HashSet<String>();
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