cable545 Geschrieben 19. November 2009 Geschrieben 19. November 2009 hallo, ich möchte eine methode schreiben welche einen blank, oder jeden anderen char wert auf den man lust hat, aus einem string entfernt. in meinem fall bekommt meine methode ein string übergeben und ich möchte daraus alle blanks entfernen und das ergebnis zurück geben. wichtig dabei ist, dass die funktionen replace oder replaceall nicht genutzt werden sollen. normalerweise sollte das nicht so schwer sein, aber in meinem fall... steh ich mal wieder aufn schlauch. bisher sieht das bei mir so aus static public String blanksRaus(String s) { StringBuilder ohneBlank=new StringBuilder(); for(int i=0;i<s.length();i++) { if(s.charAt(i)==' ') { } // if } // for return ohneBlank.toString(); }//blanksRaus hat von euch jemand einen tip? Zitieren
Dragon8 Geschrieben 20. November 2009 Geschrieben 20. November 2009 Naja mit deiner Schleife biste doch schon auf dem richtigem Weg, das einzige was du nun noch machen musst ist, solange es kein Leerzeichen ist, das Zeichen dem StringBuilder hinzufügen. Zitieren
pascal87 Geschrieben 20. November 2009 Geschrieben 20. November 2009 Oder eben umgekehrt, immer wenn ein zu ersetzendes Zeichen auftritt die Position merken und den String anhand dieser Teilstücke zusammen basteln, die Lösung von Dragon8 ist natürlich einfacher und damit besser, hatte irgendwie trotzdem diesen Weg im Kopf, muss an der Uhrzeit liegen Zitieren
speedi Geschrieben 20. November 2009 Geschrieben 20. November 2009 StringBuilder wäre eine Möglichkeit. Du kannst es aber auch über einen String machen an den du einfach immer mehr chars anhängst, wenn sie nicht dem Filterzeichen entsprechen (dürfte aber langsamer sein). Oder du zählst vorher einmal durch, wie viele chars ohne das gesuchte Zeichen im String sind, legst dir ein Char array von genau der größe an und legst dann die chars dort rein. String bietet einen Konstruktor um aus einem Char-Array einen String zu machen. Oder du benutzt einfach die methode myString.replace(" ", ""); Zitieren
cable545 Geschrieben 20. November 2009 Autor Geschrieben 20. November 2009 ok, hab es so gemacht static public String blanksRaus(String s) { StringBuilder ohneBlank=new StringBuilder(); for(int i=0;i<s.length();i++) { if(s.charAt(i)==' ') ohneBlank.append(""); else ohneBlank.append(s.charAt(i)); } // for return ohneBlank.toString(); }//blanksRaus vielen dank für die tips Zitieren
Haschman Geschrieben 20. November 2009 Geschrieben 20. November 2009 StringBuilder wäre eine Möglichkeit. Du kannst es aber auch über einen String machen an den du einfach immer mehr chars anhängst, wenn sie nicht dem Filterzeichen entsprechen (dürfte aber langsamer sein). :mod:Dir ist aber schon klar, das die Speicherauslasstung mit deiner Lösung in die Höhe getrieben wird. Es spielt in diesem Beispiele nicht eine so große Rolle (wenn man mal von den Prinziepen einer guten Software absieht), aber man sollte immer wenn man Strings zusammenfügt (außer bei Ausgaben) den StringBuilder benutzen. Du kannst es auch so machen: static public String blanksRaus(String s) { StringBuilder ohneBlank=new StringBuilder(); for(int i=0;i<s.length();i++) { if(s.charAt(i)!=' ') ohneBlank.append( s.charAt(i) ); } // for return ohneBlank.toString(); }//blanksRaus Zitieren
speedi Geschrieben 20. November 2009 Geschrieben 20. November 2009 ok, hab es so gemacht static public String blanksRaus(String s) { StringBuilder ohneBlank=new StringBuilder(); for(int i=0;i<s.length();i++) { if(s.charAt(i)==' ') ohneBlank.append(""); else ohneBlank.append(s.charAt(i)); } // for return ohneBlank.toString(); }//blanksRaus vielen dank für die tips öhm... lass doch den "if" teil weg und geh gleich zum else. Oder verwende eine != abfrage. ohneBlank.append("") fügt nämlich nur einen leeren String dazu. 0 Chars. Besser: if(s.charAt(i)!=' '){ ohneBlank.append(s.charAt(i)); } Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.