Effizientes Ersetzen von Umlauten

Status
Nicht offen für weitere Antworten.

Guybrush Threepwood

Top Contributor
Hi,
ich muss für die Generierung eines Reports aus Datenbank-Daten die Umlaute und Sonderzeichen durch Unicode ersetzen und habe dafür die folgende Methode:
Java:
	/**
	 * convenience method for replacing german umlauts with html unicode codes
	 * 
	 * @param text
	 *            the text to compute
	 * @return the altered text
	 */
	public static String replaceUmlauts(String text) {
		return text.replaceAll("ä", "ä").replaceAll("Ä", "Ä")
				.replaceAll("ö", "ö").replaceAll("Ö", "Ö")
				.replaceAll("ü", "ü").replaceAll("Ü", "Ü")
				.replaceAll("ß", "ß").replaceAll("é", "é")
				.replaceAll("ë", "ë").replaceAll("è", "è")
				.replaceAll("ê", "ê").replaceAll("ô", "ô")
				.replaceAll("À", "À").replaceAll("Å", "Å")
				.replaceAll("Á", "Á").replaceAll("Â", "Â")
				.replaceAll("Ç", "Ç").replaceAll("È", "È")
				.replaceAll("É", "É").replaceAll("Ê", "Ê")
				.replaceAll("Ë", "Ë").replaceAll("à", "à")
				.replaceAll("á", "á").replaceAll("â", "â")
				.replaceAll("å", "å").replaceAll("æ", "æ")
				.replaceAll("ç", "ç").replaceAll("Ô", "Ô")
				.replaceAll("Ã", "Ã").replaceAll("ã", "ã")
				.replaceAll("Ã", "Ã").replaceAll("ã", "ã")
				.replaceAll("Ñ", "Ñ").replaceAll("ñ", "ñ")
				.replaceAll("Õ", "Õ").replaceAll("õ", "õ")
				.replaceAll("Æ", "Æ").replaceAll("ò", "ò")
				.replaceAll("ó", "ó").replaceAll("ø", "ø")
				.replaceAll("Ò", "Ò").replaceAll("Ó", "Ó")
				.replaceAll("Ø", "Ô").replaceAll("ì", "ì")
				.replaceAll("í", "í").replaceAll("î", "î")
				.replaceAll("Ì", "Ì").replaceAll("Í", "Í")
				.replaceAll("Î", "Î").replaceAll("ù", "ù")
				.replaceAll("ú", "ú").replaceAll("û", "û")
				.replaceAll("Ù", "Ù").replaceAll("Ú", "Ú")
				.replaceAll("“", "“").replaceAll("”", "”")
				.replaceAll("„", "„").replaceAll("‚", "‚")
				.replaceAll("’", "’").replaceAll("‘", "‘")
				.replaceAll("—", "—").replaceAll("–", "–");
	}
Zwar funktioniert sie und ich bemerkte auch keine PErformanzprobleme, aber so ganz schlau ist das vermutlich nicht, oder? Die ganzen .replaceAll() nehmen bestimmt unnötig viel Rechenleistung in Anspruch. Gibt es eine Möglichkeit das schlauer zu lösen?

P.S.: Die Unicode-Zeichen im Code-Beispiel werden leider automatisch im Forum als Sonderzeichen angezeigt, deswegen die Methode im Anhang noch einmal als Text.
 
Zuletzt bearbeitet:
B

bygones

Gast
a) wenn es keine Performanceprobleme gibt sollte man auch keine Loesung fuer Performanceprobleme suchen
b) kannst du apache.common.langs (muesste es sein) nutzen . Deren StringUtils klasse hat diverse konvergierunsmethoden - wie das implementiert ist keine ahnung

Aber wie gesagt - wenn es keine Probleme gibt sollte man nicht nach Loesungen suchen
 
S

SlaterB

Gast
und wer doch sucht:
kürzer wäre zunächst einmal, die zusammengehörigen Werte in ein Array oder so zu schreiben und dann
in einer for-Schleife alles zu durchlaufen,

das ist kürzer und handlicher und erspart eventuelle Probleme durch die extreme Verkettung der Methodenaufrufe,
zu denen es aber anscheinend nicht kommt

----

dann wäre es wahrscheinlich performanter,
aus dem String einmal ein char-Array zu machen, dieses genau einmal zu durchlaufen,
und jeden char x entweder direkt in einen neuen StringBuilder einzufügen oder ersatzweise eine Menge anderer chars, falls x zu ersetzen ist,

da x ein char ist, also ein Zahlwert, kann man recht schön direkt in einem Array nachschauen, ob da derselbe char bzw. String steht oder ein anderer,
hierfür bräuchtest du also einmalig ein recht großes Array, bis zu 65.000 Einträge lang

quasi:
for (char i im String) {
builder.append(stringArray);
}
 
Zuletzt bearbeitet von einem Moderator:

Guybrush Threepwood

Top Contributor
Ah, ok. Ich habe mir mal Apache Commons Lang (org.apache.commons.lang.Entities) angesehen und dort speichert man alle Sonderzeichen in einer Map, und geht dann mit einem Writer über den String und ersetzt alle Zeichen, deren Key in der Map sind.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Effizientes Programmieren - oder Windows Autostart fürs Herunterfahren Allgemeine Java-Themen 11
E Vorschläge, effizientes Hashing von Dateien für vergleich Allgemeine Java-Themen 7
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
I Apache POI Bild in Word ersetzen Allgemeine Java-Themen 15
Drachenbauer Wie kann ich das Wort "concrete" in einem String durch ein anderes Wort ersetzen lassen? Allgemeine Java-Themen 5
I Buchstabe durch seinen Nachfolger ersetzen Allgemeine Java-Themen 29
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
I Text suchen und ersetzen im Word Dokument Allgemeine Java-Themen 3
X public Getter ersetzen (Reflection?!) Allgemeine Java-Themen 3
L Vererbung If-Else ersetzen durch was? Allgemeine Java-Themen 20
M Alles außer Muster in String ersetzen Allgemeine Java-Themen 1
S Kann man mit einem GeneralPath.curveTo ein GeneralPath.quadTo ersetzen..? Allgemeine Java-Themen 2
Seikuassi Alle Escape-Sequenzen in einem String ersetzen Allgemeine Java-Themen 4
S RandomAccessFile durch bytearrayinputstream ersetzen Allgemeine Java-Themen 4
S JTable: Model durch ein anderes ersetzen Allgemeine Java-Themen 2
C Hex Zeichen ersetzen durch leer Zeichen Allgemeine Java-Themen 5
T Nur innerhalb des regex-Match ersetzen Allgemeine Java-Themen 9
E NetBeans Vector durch ArrayList ersetzen Allgemeine Java-Themen 4
C Variablen $-Zeichen in String ersetzen Allgemeine Java-Themen 3
D Ersetzen in Open Office Dokument Allgemeine Java-Themen 2
F Slash durch Systembezogenen Fileseparator ersetzen Allgemeine Java-Themen 18
F System.out.println mit log4j ersetzen Allgemeine Java-Themen 10
X Klassen innerhalb einer jar ersetzen Allgemeine Java-Themen 2
D Fehler beim ersetzen in String Allgemeine Java-Themen 2
2 String matchen und ersetzen Allgemeine Java-Themen 3
M Eclipse drei slashs durch zwei ersetzen? Allgemeine Java-Themen 3
J HTML-Sonderzeichen ersetzen Allgemeine Java-Themen 2
Daniel_L RegEx-Frage: Ersetzen in UBB ausschließen Allgemeine Java-Themen 2
Ark Array durch Interface ersetzen Allgemeine Java-Themen 7
thE_29 $ in String ersetzen fürs nochmalige ersetzen.. (JavaBug?) Allgemeine Java-Themen 7
nrg JS als ScriptEngine - alle Punkte ersetzen Allgemeine Java-Themen 4
S String in Datei finden und ersetzen Allgemeine Java-Themen 11
O Zeichenkette aus Zeichenkette ersetzen mit Hashtable Allgemeine Java-Themen 8
W dateiinhalte ersetzen Allgemeine Java-Themen 2
M Klasse zur Laufzeit ersetzen Allgemeine Java-Themen 10
S teile einer datei mit Regexp ersetzen Allgemeine Java-Themen 5
M String ersetzen Allgemeine Java-Themen 10
M Ersetzen von 
 Allgemeine Java-Themen 2
M Suchen und Ersetzen? Allgemeine Java-Themen 4
G String.replaceall - mehrere Zeichen durch eines ersetzen Allgemeine Java-Themen 5
Daniel_L RegEx - variable Vorkommen ersetzen? Allgemeine Java-Themen 5
E *.class ändern/ersetzen/überschreiben. Allgemeine Java-Themen 9
J Teile eines Strings ersetzen Allgemeine Java-Themen 2
R Farbe im Bild ersetzen Allgemeine Java-Themen 11
J Zweidimensionales Array durch ZwischenArray ersetzen Allgemeine Java-Themen 3
J Chars in einem String durch "nichts" ersetzen Allgemeine Java-Themen 3
F [ und mit replaceAll() ersetzen Allgemeine Java-Themen 2
A Fehler beim Ersetzen eines Strings Allgemeine Java-Themen 3
G Suchen und Ersetzen bei JTextAray Allgemeine Java-Themen 3
M RegEx: Muster ersetzen Allgemeine Java-Themen 6
V Lib für Strings suchen und ersetzen (erweitert) Allgemeine Java-Themen 3
M Variablen in einer .doc Vorlage ersetzen Allgemeine Java-Themen 4
M Worte aus Textdatei mit Java ersetzen Allgemeine Java-Themen 4
R Datum in *.txt suchen und ersetzen Allgemeine Java-Themen 2
E Regex Frage (+ ersetzen) Allgemeine Java-Themen 18
T Bestimmte bytes in einer Datei ersetzen? Allgemeine Java-Themen 4
P replaceAll und "\" durch "/" ersetzen Allgemeine Java-Themen 15
J Vector - Wert ersetzen Allgemeine Java-Themen 14
G Ersetzen von " durch " Allgemeine Java-Themen 4
T Slashes in String durch Punkte ersetzen Allgemeine Java-Themen 2
L ein char in einem string ersetzen? Allgemeine Java-Themen 5
R String.replaceAll $lt; ersetzen Allgemeine Java-Themen 3
Maximum '.' in String ersetzen macht Schwierigkeiten Allgemeine Java-Themen 2
T Systemunabhängig File Separator ersetzen Allgemeine Java-Themen 13
M RS232 Schnittstelle ansteuern (Floppy durch Laptop ersetzen) Allgemeine Java-Themen 2
S Wörter ersetzen mit regex Allgemeine Java-Themen 11
C "<" durch "/<" ersetzen Allgemeine Java-Themen 14
G Suchwörter in einen Text ersetzen Allgemeine Java-Themen 6
C Collection Element ersetzen Allgemeine Java-Themen 5
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
D Frage zu Java und Umlauten / charsets Allgemeine Java-Themen 2
V Files mit Umlauten ergeben keine Größe Allgemeine Java-Themen 9
S Falsches Encoding bei Drag and Drop von Umlauten Allgemeine Java-Themen 16
I FTP Probleme mit Umlauten in Dateinamen Allgemeine Java-Themen 5
B Problem mit ArrayList<String> und Umlauten Allgemeine Java-Themen 8
N Probleme mit Umlauten beim Einlesen Allgemeine Java-Themen 6
Daniel_L Desktop-Api: Problem mit open() und Umlauten Allgemeine Java-Themen 5
S Alternative zu Robot (wegen Umlauten) Allgemeine Java-Themen 13
T Schlüsseldatei mit Umlauten parsen, aber wie. Allgemeine Java-Themen 6
A Probleme mit Umlauten in der Java RE unter Debian Linux Allgemeine Java-Themen 2
V Frage zu Umlauten in Java Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben