How to do the opposite of StringBuilder append in Java?

前端 未结 4 378
后悔当初
后悔当初 2021-01-21 02:24

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

相关标签:
4条回答
  • 2021-01-21 03:00

    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();
    
    0 讨论(0)
  • 2021-01-21 03:12

    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");
    
    0 讨论(0)
  • 2021-01-21 03:12

    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,";

    0 讨论(0)
  • 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
    
    0 讨论(0)
提交回复
热议问题