Zeichenkette aus Zeichenkette ersetzen mit Hashtable

ostpower

Mitglied
Hallo zusammen,

ich habe eine Hashtable mit einigen Wertepaaren:

Java:
Hashtable<String, String> h = new Hashtable<String, String>();
 
h.put("?","?");
h.put("[","[");
h.put("\0","\0");

Ich habe jetzt einen String "Ein \0 Test"
Dieser String soll durchlaufen werden, wenn er \0 findet, soll er das mit dem entsprechenden Hashtable-Wert ersetzen. Ich wollte den String erst Zeichenweise mit charAt durchlaufen, aber da ich auch Werte wie \0 habe, die mehrere Zeichen enthalten geht das ja nicht. Hat jemand ein Vorschlag wie ich das machen kann?
 
Die Werte in der Hashtable hat er HTML-Codiert, hab jetzt das ; weggelassen

Hallo zusammen,

ich habe eine Hashtable mit einigen Wertepaaren:

Java:
Hashtable<String, String> h = new Hashtable<String, String>();
 
h.put("?","&#63");
h.put("[","&#91");
h.put("\0","&#92&#48");

Ich habe jetzt einen String "Ein \0 Test"
Dieser String soll durchlaufen werden, wenn er \0 findet, soll er das mit dem entsprechenden Hashtable-Wert ersetzen. Ich wollte den String erst Zeichenweise mit charAt durchlaufen, aber da ich auch Werte wie \0 habe, die mehrere Zeichen enthalten geht das ja nicht. Hat jemand ein Vorschlag wie ich das machen kann?
 
Ich würde die HashTable per

Java:
for (Map.Entry<String, String> entry : h.entrySet()) {
   ...
}

durchlaufen und prüfen, ob der String entry.getKey() enthält und dann mit replace und entry.getValue() ersetzen.
 
Hm...wie sähe denn ein Codebeispiel aus, um z.b. den String "Ein oo Test" umzuwandeln in "Ein xx Test"?
Also "oo" ist der Key einer Hashtable oder Hashmap und "xx" der entsprechende Value. Ich bräuchte wirklich mal ein Beispiel, an dem ich das nachvollziehen kann.
 
Java:
    public static void main(String[] args) {
        Map<String, String> replacements = new HashMap<String, String>();
        replacements.put("oo", "xx");
        replacements.put("ee", "ff");
        
        String test = "Dies ist ein oo Teststring oo.";

        System.out.println("vorher: " + test);
        for (Map.Entry<String, String> entry : replacements.entrySet()) {
            test = test.replaceAll(entry.getKey(), entry.getValue());
        }

        System.out.println("nachher: " + test);
    }
 
Das ist schonmal super. Vom Prinzip hab ich es jetzt verstanden. Jetzt habe ich aber folgende Hashwerte:

Java:
h.put("!" , "!");
h.put("--","--");
h.put("#","#");

Das Problem ist jetzt, dass er das "#" in dem nächsten Durchlauf auch ersetzt. Also "Das ist -- ein Test" wird dann zu "Das ist -- ein Test"
 
Das ist schonmal super. Vom Prinzip hab ich es jetzt verstanden. Jetzt habe ich aber folgende Hashwerte:

Java:
h.put("!" , "!");
h.put("--","--");
h.put("#","#");

Das Problem ist jetzt, dass er das "#" in dem nächsten Durchlauf auch ersetzt. Also "Das ist -- ein Test" wird dann zu "Das ist &ෙ&ෙ ein Test"

(Also die Hashvalues sind die HTML-Codes von "!" etc. deswegen zeigt er das hier nicht an. Ich hoffe das Problem ist trotzdem erkenntlich.
 

Zurück
Oben