Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to do the opposite of StringBuilder append in Java?

Tags:

java

What would be the opposite of:

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

I have a list and I am adding the name of the planet every time the user clicks on a checkbox, I want to remove the name from the savedPlanets if the checkbox is cleared

like image 708
fasheikh Avatar asked Feb 18 '26 14:02

fasheikh


2 Answers

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
like image 159
Bharat Sinha Avatar answered Feb 20 '26 02:02

Bharat Sinha


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();
like image 29
Peter Lawrey Avatar answered Feb 20 '26 02:02

Peter Lawrey