vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Vokale & Umlaute...Permutation? 
Autor: CyberDreams
Datum: 21.10.10 16:37

Hy @all,

hat von euch zufällig ein paar Tipps & Tricks, wie ich folgende Problemstellung lösen kann?

Man gibt in einer Textbox zB das Wort "Maier" ein.

Nun bräuchte ich eine Prozedur, die mir folgendes bewerkstelligt:
Es sollten ALLE Möglichkeiten des Wortes Maier mit Umlauten (abhängig von den Vokalen) ermittelt werden.

zB.
Maier
Mäier
Máier
Maiér
Maièr
Mäiér
Mäièr
...
..
etc etc etc

Hat eventuell jemand ein paar Tipps für mich oder gar schon ein entsprechendes Code-Schnippsel rumliegen?

Vielen Dank und Lg,
Cyber
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Vokale & Umlaute...Permutation? 
Autor: CyberDreams
Datum: 22.10.10 08:32

Vielen vielen vielen lieben Dank Preisser, das war GENAU DAS, was ich gesucht hatte
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Vokale & Umlaute...Permutation? 
Autor: CyberDreams
Datum: 22.10.10 13:50

Wie müsste ich den Code ändern, dass er noch beispielsweise folgende Regel einhält:

Wenn man die Permutation des Wortes "Muller" durchführen lässt, so sollte es so sein, dass wenn ein Umlaut (hier also das ü) vorkommt, keine Buchstaben mit Axon darin vorkommen dürfen (also kein é oder è).

Des weiteren wäre noch fein, wenn begrenzt werden würde, dass in einem Wort maximal 2 Buchstaben mit Axon vorkommen dürfen...

Durch diese beiden Regeln würde sich die Anzahl der Permutationen teils deutlich verringern...

Vielen lieben Dank nochmal für den ersten Codeblock. Würde mich freuen, wenn du mich hier noch ein bisschen unterstützen könntest

Lg,
Cyber
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Vokale & Umlaute...Permutation? 
Autor: ModeratorMartoeng (Moderator)
Datum: 22.10.10 15:33

Nur mal so zur Info: das ist keine "Permutation". Eine Permutation ist die Vertauschung existierender ELemente einer Menge, also für "Muller" bspw. "llumer".
Und ein "Axon" soll wohl eher frz. "Accent" heißen?

Was das eigentliche Problem angeht: wofür genau brauchst Du das denn? Einige Kombinationen wie bspw. Mäiér denke ich kann man ausschließen, da diese Namen nicht existieren.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Vokale & Umlaute...Permutation? 
Autor: CyberDreams
Datum: 22.10.10 15:41

Vielen Dank für die Info Martoeng. Wie nennt man diesen Vorgang denn dann?

Ich habe hier das Problem, dass ich über IXSSO/Cisso einen "Indexing Service" abfragen muss. Da hier manche Namen mal so und mal so geschrieben sind, und ich keinerlei Möglichkeit gefunden habe, das den IDXS selbst machen zu lassen, bleibt mir leider nur diese Variante übrig.

Du hast recht... Mäiér macht keinen Sinn...deshalb auch die weitere Anfrage, ob man in die Funktion noch quasi Regeln einbauen kann. Denn wenn "herkömmliche" Umlaute wie ä,ö und ü vorkommen, dann sollen keine weiteren Möglichkeiten ausgespuckt werden, die Accents (danke für die Korrektur) enthalten. Und es gibt anscheinend recht wenige Wörter, die mehr als 2 Accents-Buchstaben beinhalten. Deshalb auch diese Regeln...

Lg,
Cyber
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Vokale & Umlaute...Permutation? 
Autor: ModeratorMartoeng (Moderator)
Datum: 22.10.10 16:03

Das Einpflanzen von Buchstaben würde ich einfach Mutation nennen.

Tjoa, wenn man in manche Länder schaut, da gibt's dann komische Namen
Ich kann mich da bei den Recherchen zu meiner Diplomarbeit an Namen mit 3 mal ä erinnern.
Aber das ist eher untypisch, normalerweise gibt's da nicht mehr als 2. Dennoch, man kann das nicht ausschließen.

Dass Du einen "dummen" Indexing-Service abfragen musst ist natürlich ungünstig. Bei Datenbanken etc. hätte man da noch andere Wege gehen können. Die Möglichkeit mittels regulärer Ausdrücke abzufragen ist nicht gegeben?


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Vokale & Umlaute...Permutation? 
Autor: gunthard
Datum: 26.10.10 09:12

CyberDreams schrieb:
Zitat:



Wenn man die Permutation des Wortes &quot;Muller&quot;
durchführen lässt, so sollte es so sein, dass wenn ein Umlaut
(hier also das ü) vorkommt, keine Buchstaben mit Axon darin
vorkommen dürfen (also kein é oder è).


Davon kannst Du nicht ausgehen. Es gibt heute immer mehr Doppelnamen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Vokale & Umlaute...Permutation? 
Autor: ModeratorMartoeng (Moderator)
Datum: 26.10.10 10:26

Doppelnamen könnte man allerdings durch ein Leerzeichen oder einen Bindestrich erkennen.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 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