| |

Fortgeschrittene ProgrammierungRe: Vokale & Umlaute...Permutation? | |  | Autor: Preisser | Datum: 21.10.10 18:46 |
| Hallo,
nun, dafür könnte man beispielsweise ein Array aus Char-Arrays erstellen, das für jeden Buchstaben im Wort die möglichen Variationen für diesen auflistet. Dann muss man nur das immer so durchlaufen und daraus die neuen Wörter bilden.
Allerdings ist auf diese Weise das ganze in VB6 ein bisschen schwieriger zu implementieren als in Sprachen wie C# und Java, da man unter VB6 keine Chars hat, sondern nur Strings, und meines Wissens auch keine Arrays aus Arrays erstellen kann (damit sind keine mehrdimensionalen Arrays gemeint). Wenn man das ganze also mit mehrdimensionalen Arrays machen würde, bräuchte man ein nxm-Array, wobei n die Länge des Wortes ist und m die maximale Anzahl an Variationen für ein bestimmtes Zeichen.
In C# könnte das ganze folgendermaßen aussehen (hab mich leider mit der VB.Net-Syntax noch nicht so befasst, und in VB6 ist es auf diese Weise wie gesagt ein wenig aufwändig zu programmieren, es sollte aber dennoch möglich sein).
public static string[] getPermutationen(string eingabe) {
//' Wort kleinschreiben, um Zeichen zu finden
string eingabeNormal = eingabe.ToLower();
bool[] konvGross = new bool[eingabe.Length];
//' die Zeichen, bei denen Vertauschungen möglich sind
string[] varZeichen = {"aäáàâ", "eéèê", "iíìî", "oöóòô", "uüúùû"};
string[] perms; //' Rückgabewert
char[][] charPerms = new char[eingabe.Length][];
int[] charPermsZaehler = new int[charPerms.Length];
int anzahlPermutationen = 1; //' die Anzahl an Permutationen (insgesamt)
//' Schauen, für welche Zeichen es verschiedene Varianten gibt
for (int k = 0; k < eingabe.Length; k++) {
konvGross[k] = char.ToUpper(eingabe[k]) == eingabe[k];
for (int j = 0; j < varZeichen.Length; j++) {
if (varZeichen[j].IndexOf(eingabeNormal[k]) >= 0) {
//' variables Zeichen
charPerms[k] = varZeichen[j].ToCharArray();
}
}
if (charPerms[k] == null) //' einfaches Zeichen
charPerms[k] = new char[] {eingabe[k]};
anzahlPermutationen *= charPerms[k].Length;
}
perms = new string[anzahlPermutationen];
char[] neuesWort = new char[eingabe.Length];
for (int k = 0; k < anzahlPermutationen; k++) {
for (int z = 0; z < neuesWort.Length; z++) {
neuesWort[z] = charPerms[z][charPermsZaehler[z]];
if (konvGross[z])
neuesWort[z] = char.ToUpper(neuesWort[z]);
}
perms[k] = new string(neuesWort);
charPermsZaehler[charPermsZaehler.Length - 1]++; //' Zähler erhöhen
for (int j = charPermsZaehler.Length - 1; j > 0; j--) {
if (charPermsZaehler[j] == charPerms[j].Length) {
charPermsZaehler[j] = 0;
charPermsZaehler[j - 1]++;
}
}
}
return perms;
} Die Strings in dem varZeichen-Array geben dabei an, bei welchen Zeichen solche Vertauschungen möglich sind. Es wird z.B. auch bei Eingabe von "ä" ein Array mit "a", "ä", "á" usw. geliefert. Großbuchstaben werden auch berücksichtigt.
Beitrag wurde zuletzt am 21.10.10 um 19:15:37 editiert. |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevGraph (VB/VBA) 
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|