Hallo, ich hoffe ich kann mein Problem detailliert genug schildern.
Also ich habe einen String, der einen Namen enthält (z.B: "Maier"). Der soll in eine Datenbank gespeichert werden, parallel soll aber überprüft werden, ob der Name (evtl. mit anderer Schreibweise) schon existiert.
Das klappt auch soweit. Der Code hierzu:
pruefString ist meine Name (Bsp.: Maier)
Nun überprüft er, ob [Meier, Maier, Mayer, Meyer, Meijer oder Meiher] existiert, egal in welcher Schreibweise ich Maier eingebe.
Nun gibt es aber Namen, wo "ei", "ai", "ey", "ay", "eij", "eih" mehr als einmal vorkommt.
Beispiel.: "Schweinsteiger"
Nun würde nur nach folgenden Schreibweisen geschaut.
- Schweinsteiger
- Schwainstaiger
- Schweynsteiger
- Schwaynsteiger
- Schweijnsteiger
- Schweihnsteiger
Aber im hinteren Teil steckt ja auch noch ein "ei" (...steiger)
Er soll also in dem Fal prüfen, ob folgende Kombinationen schon in der Datenbank vorhanen sind:
- Schw(ei/ai/ey/ay/eij/eih)nsteiger
- Schw(ei/ai/ey/ay/eij/eih)nstaiger
- Schw(ei/ai/ey/ay/eij/eih)nsteyger
- Schw(ei/ai/ey/ay/eij/eih)nstayger
- Schw(ei/ai/ey/ay/eij/eih)nsteijger
- Schw(ei/ai/ey/ay/eij/eih)nsteihger
Wie bekomme ich das hin? Ich habe da evtl. an eine For-Schleife gedacht, wüsste aber nicht, diese einzubauen.
[/code]
Also ich habe einen String, der einen Namen enthält (z.B: "Maier"). Der soll in eine Datenbank gespeichert werden, parallel soll aber überprüft werden, ob der Name (evtl. mit anderer Schreibweise) schon existiert.
Das klappt auch soweit. Der Code hierzu:
Code:
// Abfrage der EI/AI/EIH/EY/AY-Gruppe
String stringAi = "ai";
String stringEih = "eih";
String stringAy = "ay";
String stringEy = "ey";
String stringEi = "ei";
String stringIj = "eij";
String eiGroup = "";
if (pruefString.contains(stringIj)) { eiGroup = stringIj; }
else if (pruefString.contains(stringEi)) { eiGroup = stringEi; }
else if (pruefString.contains(stringAi)) { eiGroup = stringAi; }
else if (pruefString.contains(stringEih)) { eiGroup = stringEih; }
else if (pruefString.contains(stringEy)) { eiGroup = stringEy; }
else if (pruefString.contains(stringAy)) { eiGroup = stringAy; }
if (pruefString.contains(eiGroup)) {
stringEi = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringEi + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length());
if (hql.endsWith("WHERE")) {
hql += " c." + abfrageFeld + " Like :stringEi";
}
else {
hql += " OR c." + abfrageFeld + " LIKE :stringEi";
}
stringAi = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringAi + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length());
hql += " OR c." + abfrageFeld + " LIKE :stringAi";
stringEih = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringEih + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length());
hql += " OR c." + abfrageFeld + " LIKE :stringEih";
stringEy = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringEy + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length());
hql += " OR c." + abfrageFeld + " LIKE :stringEy";
stringAy = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringAy + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length());
hql += " OR c." + abfrageFeld + " LIKE :stringAy";
stringIj = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringIj + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length());
hql += " OR c." + abfrageFeld + " LIKE :stringIj";
}
pruefString ist meine Name (Bsp.: Maier)
Nun überprüft er, ob [Meier, Maier, Mayer, Meyer, Meijer oder Meiher] existiert, egal in welcher Schreibweise ich Maier eingebe.
Nun gibt es aber Namen, wo "ei", "ai", "ey", "ay", "eij", "eih" mehr als einmal vorkommt.
Beispiel.: "Schweinsteiger"
Nun würde nur nach folgenden Schreibweisen geschaut.
- Schweinsteiger
- Schwainstaiger
- Schweynsteiger
- Schwaynsteiger
- Schweijnsteiger
- Schweihnsteiger
Aber im hinteren Teil steckt ja auch noch ein "ei" (...steiger)
Er soll also in dem Fal prüfen, ob folgende Kombinationen schon in der Datenbank vorhanen sind:
- Schw(ei/ai/ey/ay/eij/eih)nsteiger
- Schw(ei/ai/ey/ay/eij/eih)nstaiger
- Schw(ei/ai/ey/ay/eij/eih)nsteyger
- Schw(ei/ai/ey/ay/eij/eih)nstayger
- Schw(ei/ai/ey/ay/eij/eih)nsteijger
- Schw(ei/ai/ey/ay/eij/eih)nsteihger
Wie bekomme ich das hin? Ich habe da evtl. an eine For-Schleife gedacht, wüsste aber nicht, diese einzubauen.
[/code]