Ich habe das folgende Problem. Ich versuche, deutsche Umlaute wie ä , ö , ü in Java zu ersetzen. Aber es funktioniert einfach nicht. Hier ist mein Code:
%Vor%Ein ä bleibt ein ä und so weiter. Ich weiß nicht, ob dieses Problem etwas mit der Kodierung zu tun hat, aber die Zeichenfolge enthält genau das Zeichen, das ich ersetzen möchte.
Vielen Dank im Voraus
Das hat endlich für mich funktioniert:
%Vor%Vielen Dank für all eure Antworten und Hilfe. Es war schließlich eine Mischung aus Nafas (mit der neuen Zeichenfolge) und Joop Eggen (die richtige Ersetzung-Anweisung). Du hast mein Dankeschön viel Dank!
Zuerst gibt es ein kleines Problem in Unicode:
ä
könnte ein Codepunkt SMALL_LETTER_A_WITH_UMLAUT oder sein
zwei Codepunkte: SMALL_LETTER_A, gefolgt von COMBINING_DIACRITICAL_MARK_UMLAUT. Dafür kann den Unicode-Text normalisieren .
%Vor% Das C
bedeutet compose und würde die kompakte Version ergeben.
Das zweite, eher prozesische Problem ist, dass die Codierung der Java-Quelle im Editor dieselbe sein muss wie für den javac -encoding ...
-Compiler.
Sie können testen, ob die Kodierung korrekt ist, indem Sie (testweise) das U-Escaping verwenden:
%Vor%Meine Vermutung ist, dass dies das Problem sein könnte. Die internationale Norm scheint UTF-8 für Java Quellen und Kompilierung verwendet zu haben.
Außerdem können Sie
verwenden %Vor%ohne Regex ersetzen, schneller sein.
Ihr Code sieht gut aus, replaceAll()
sollte wie erwartet funktionieren.
Versuchen Sie dies, wenn Sie auch die Großschreibung beibehalten möchten (z. B. ÜBUNG
wird UEBUNG
, nicht UeBUNG
):
KODIERENDE KODIERUNG ENCODIEREN ....
Unterschiedliche Eingabequellen können zu Komplikationen bei der String-Codierung führen. Zum Beispiel kann eine UTF-8
Kodierung haben, während die andere ISO
einige Leute vorgeschlagen, dass der Code für sie funktioniert, daher ist es am wahrscheinlichsten, dass Ihre Strings unterschiedliche Codierung während der Verarbeitung haben. (Unterschiedliche Codierung führt zu einem anderen Byte-Array, also kein Ersetzen ...)
Um Ihr Problem von seiner Wurzel zu lösen, müssen Sie sicherstellen, dass jede Ihrer Quellen genau die gleiche Kodierung verwendet.
probiere diese Übung und es hilft dir hoffentlich, dein Problem zu lösen:
1-versuche das:
%Vor% Der nächste Schritt besteht darin, zu sehen, wie der orgi
-String gebildet wird. Wenn Sie beispielsweise vom Web empfangen haben, stellen Sie sicher, dass Ihre POST- und GET-Methode Ihre bevorzugte Codierung verwendet
EDIT 1:
versuche das:
%Vor%Wenn dieser nicht funktioniert, versuchen Sie Folgendes:
%Vor%Ich habe gerade versucht, es auszuführen, und es läuft gut.
Wenn Sie keine regulären Ausdrücke verwenden, verwende ich string.replace
anstatt string.replaceAll
, da es etwas schneller ist als letzteres. Der Unterschied zwischen ihnen ist hauptsächlich, dass replaceAll mit Regex umgehen kann.
EDIT: Gerade bemerkt, Leute in den Kommentaren haben die gleichen vor mir gesagt, also wenn Sie Theres gelesen haben, können Sie ziemlich ignorieren, was ich sagte, wie das Problem an anderer Stelle in Ihrem Code existiert, wie dieser Ausschnitt funktioniert wie erwartet.
Funktioniert gut, wenn ich es versuche, also muss es ein Kodierungsproblem sein.
Überprüfen Sie Ihre Systemcodierung. Möglicherweise möchten Sie -encoding UTF-8
zu Ihrer javac
Compiler-Befehlszeile hinzufügen.
Tags und Links java