Hallo liebe Experten,
zur Zeit arbeite ich an einem Spiel.
http://www.haller-mtl.de/breakout/appletstart.html
Nach der Eingabe des Spielernamens sollen alle Zeichen, die keine Zahlen oder Buchstaben sind, aus dem Namen gefiltert werden.
Im Moment habe ich mir diese Lösung ausgedacht:
********************************
/**
* Gibt die übermittelte Zeichenkette zurück,
* nachdem daraus alle Sonderzeichen entfernt wurden.
* @param oldString Die ungefilterte Zeichenkette.
* @return Die Zeichenkette ohne Sonderzeichen.
*/
public static String getFilteredString(String oldString)
{
// Die Zeichenkette wird in einen StringBuffer verwandelt.
StringBuffer buffer = new StringBuffer(oldString);
// memory merkt sich die vergleichende Zeichenkette zu Testzwecken.
String memory = „“;
// position merkt sich die Position von einem Sonderzeichen.
int position;
// In dieser Schleife werden alle unerwünschten Zeichen
// aus dem String entfernt.
while (true)
{
// Die Zeichenkette in ihrer jetzigen Form wird sich gemerkt.
memory = buffer.toString();
// Unerwünschte Zeichen werden entfernt.
position = buffer.indexOf("~");
if (position != -1) buffer.deleteCharAt(position);
position = buffer.indexOf("[");
if (position != -1) buffer.deleteCharAt(position);
position = buffer.indexOf("]");
if (position != -1) buffer.deleteCharAt(position);
position = buffer.indexOf("(");
if (position != -1) buffer.deleteCharAt(position);
position = buffer.indexOf(")");
// usw. usw., mehr als 35 Zeichen.
// Wurde bei diesem Durchlauf kein Sonderzeichen mehr entfernt,
// wird die Schleife verlassen.
if (memory.equals(buffer.toString())) break;
}
// Aus dem Char-Array wird wieder eine Zeichenkette.
// Diese Zeichenkette wird zurück gegeben.
return buffer.toString();
}
***************************
Die Methode wird sehr groß, weil ich jedes Zeichen, dass ich vermeiden möchte, einzeln aufgelistet wird.
Gern würde ich eine elegantere Lösung finden.
Hat jemand eine Idee?
und tschüs
Uwe
