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("");
j++;
}
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("");
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.
Außerdem sollte man die Methode compareTo(String) verwenden,
denn dann ist auch der ganze Unicode-Kram mit drinn.
Du liebe Güte! Genau wie man alles Y2K-fets zu machen hat, sollte man alles Unicode-fest machen. Sonst muß irgendjemand mit großen Schwierigkeiten nachholen, was Du kinderleicht hättest machen können.
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("");
j++;
}
Du vergleichst ja den ganzen String mit dem Zeichen „ä“. Aber da wird ja nicht nur ein Zeichen drinstehen im String. Du musst den String Zeichen für Zeichen durchgehen oder eben eine Ersetzroutine finden, die in dem String ein Zeichen durch ein anderes ersetzt