Antwort von
nach einer Stunde
hilfreich
Re: Umlaute ersetzten
Hallo Christoph,
Ich möchte in einem String nach Umlauten (ä, ü, ö) suchen und
diese durch entsprechende HTML-Tags ersetzten. Wenn ich aber
folgende Anweisung schreiben, wird die Anweisung nicht
ausgeführt.
if(sAnweisung.equals("ä")){ //sAnweisung ist der String
Out.write("<entsprechendes Tag>");
j++;
}
Ich verweise erst einmal auf die Doku von JDK 1.3 (http://java.sun.com/j2se/1.3/docs/api/index.html). Wenn man dort unter der Klasse String schaut, dann steht dort:
-- Schnipp --
Compares this string to the specified object. The result is true if and only if the argument is not null and is a String object that represents the same sequence of characters as this object.
-- Schnapp --
D.h. genau dann wenn in sAnweisung nur(!!!) ein "ä" steht, dann wird die Anweisung ausgeführt. Bei "äh" schon nicht mehr.
Außerdem sollte man die Methode compareTo(String) verwenden, denn dann ist auch der ganze Unicode-Kram mit drinn.
Das ist aber noch nicht die Lösung.
Ich würde über den ganzen String iterieren und dann einen neuen String zusammenbauen.
-- ungetesteter Code und evtl. umständlich!!! --
import java.text.*;
...
public String replaceToEntities(String text) {
String result = new String();
StringCharacterIterator iter = new StringCharacterIterator(text);
int lastIndex = 1;
for (char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {
if (c.compareTo('ä')) {
result.append(text.substring(lastIndex, iter.getIndex()-1));
result.append("ä");
lastIndex = iter.getIndex()+1;
}
...
}
return result;
}
-- Schnapp --
Ist evtl. etwas umständlich, aber damit müßte es funktionieren.
Algorithmus läuft in etwa so ab:
Laufe alle Zeichen durch.
Wenn ein 'ä' gefunden wurde, dann kopiere alle Zeichen vor dem 'ä' in das Ergebnis, hänge "ä" an und mache weiter.
Ich hoffe damit einigermaßen geholfen zu haben.
Gruß Frank