ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
2071
2071
EMPFEHLEN
-
Hallo ich habe folgendes Problem:
ich möchte in einer Textbox ein Text reinschreiben und es sollen die 5 häufigsten Buchstaben ausgetauscht werden. z.B. "Heute scheint die Sonne" und jetzt soll der Buchstabe "e" ersetzt werden mit "y" "Hyuty schyint diy Sonny".
Wenn Ihr Ideen habt würde ich mich sehr freuen Danke.
-
09.04.07 22:00 #2
Dazu kennt VB den Befehl Replace(), sieht so aus:
Code vb:1 2 3 4 5 6 7 8
'Vorher den Inhalt der Textbox in eine Variable sText = Text1.Text 'Syntax: 'Text = Replace(Text, Text der ersetzt werden soll, Text durch den ersetzt werden soll) 'also in deinem Fall: sText = Replace(sText, "e", "y") 'und wieder zurück in die Textbox Text1.Text = sText
Der Doc!A: Hilfe, ich hab zwei Dateien hinzugefügt und nun sind die anderen weg
B: Die Scrollbar da rechts ist dir schon mal aufgefallen?
-
Okay das ist schon mal gut.
Aber dann ist ja noch das Problem mit den häufigsten Buchstaben austauschen wie bekomme ich das hin das er mir die 5 häufigsten Buchstaben austauscht.
Also man muss doch irgendwie die Buchstaben zählen können mit einem Befehl?
-
Hi, ich hab im moment keine Ahnung ob das auch besser zu lösen ist aber ich hab mal eben was gemacht vielleicht hilft es dir ja.
Es wird am Anfang alles zu kleinen Buchstaben geändert, da nur diese auf die häufigkeit überprüft werden (also von a-z), es wird nur das häufigste ersetzt und wenn keins am häufigsten ist wird das ersten genommen.
Das ist aber bestimmt alles anpassbar. Hier dir function:
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
Function HoechstErs(Text, Ersatz) Dim Buchst(26) stri = LCase(Text) 'Lcase: macht alle Buchstaben klein For n = 1 To Len(stri) For m = 1 To 26 If Mid(stri, n, 1) = Chr(96 + m) Then '96 ist das Zeichen vor dem a Buchst(m - 1) = Buchst(m - 1) + 1 End If Next m Next n Dim hoechst For x = 0 To 25 If Buchst(x) > Buchst(hoechst) Then hoechst = x 'vergleichen welches am höchsten ist Next x HoechstErs = Replace(stri, Chr(97 + hoechst), Ersatz) End Function
aufrufen dann zB
Also.. nicht wirklich sauber programmiert und bestimmt gibt es eine bessere LösungCode vb:1 2 3
Private Sub Command1_Click() Text1.Text = HoechstErs(Text1.Text, "x") End Sub

Aber wenn du es anpassen willst müsstes du bei der "Überprüfstelle" anstelle von chr vielleicht doch dein Array manuell füllen mit allem was überprüft werden soll. Oder alles von 0-255, oder wie weit das reicht, nehmen.
Und wenn du auch die 2. und 3. häufigsten willst würde ich das alles nochmal wiederholen aber vorher den höchsten Wert auf 0 setzen. Müsste leicht anzupassen sein.
Achso und für den Fall, dass keins häufiger ist bräuchtest du noch eine Abfrage.
Ich hoffe das hilft dir =)
-
10.04.07 10:47 #5
Hallo Zuecho,
hab' da auch mal einen Vorschlag. Die Komplexität beläuft sich hierbei lediglich auf die Anzahl der verschiedenen charackters im Original-String:
Code vb:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Dim charCount% Dim myStr$, newStr$, curChar$, savChar$ myStr = LCase("Heute scheint die Sonne") newStr = myStr 'myStr bleibt unverändert; newStr wird verarbeitet charCount = 0 Do curChar = Left(newStr, 1) 'aktueller Buchstabe newStr = Replace(newStr, curChar, "") 'aktueller Buchstabe wird entfernt If Len(myStr) - Len(Replace(myStr, curChar, "")) > charCount Then 'Anzahl des aktuellen Buchstaben ermitteln charCount = Len(myStr) - Len(Replace(myStr, curChar, "")) 'ggf. neue Anzahl speichern savChar = curChar 'entsprechenden Buchstaben speichern End If Loop Until newStr = "" MsgBox "Grösste Häufigkeit: " & charCount & " mal " & savChar MsgBox Replace(myStr, savChar, "y")
Auch hier gilt: Sind mehrere Buchstaben mit der grössten Häufigkeit vorhanden, bleibt der erste Treffer gespeichert.
GrußIrren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer!
(unbekannt )
Bis irgendwann...
-
Okay danke für die Antworten damit werde ich wohl weiter kommen.
Aber eine frage noch gibt es auch einen Lösungsweg mit Case also jetzt z.B "Case is a" , "Case is b" und so weiter weil das würde ich dann viel übersichtilicher finden.
Also das immer die Anzahl von den Buchstaben in den jeweiligen Buchstaben gespeichert würd und dann am Ende ermittelt würd welche am häufigsten da sind.
-
Okay danke es Funtioniert jetzt so wie ich es mit gedacht habe aber eine Frage noch. Wie bekomme ich die Buchstaben am Ende wieder Groß die am Anfang Groß waren?
-
14.04.07 13:14 #8
Wenn der Buchstabe mit der grössten Häufigkeit ermittelt wurde, ersetzt Du im Original-String einfach alle kleinen und alle grossen Buchstaben.
Code vb:1 2 3 4
'savChar - Buchstabe mit der grössten Häufigkeit 'angelehnt an die vorherigen posts - ersetzen durch "y" bzw. "Y" myStr = Replace(myStr, savChar, "y") myStr = Replace(myStr, UCase(savChar, "Y"))
Dazu darfst Du natürlich nicht den Original-String verändern, oder Du speicherst ihn vorher noch irgendwo zwischen...
GrußIrren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer!
(unbekannt )
Bis irgendwann...
Ähnliche Themen
-
Buchstaben von QString ersetzen und Teile löschen
Von BlackFusion im Forum C/C++Antworten: 4Letzter Beitrag: 01.06.10, 21:58 -
Buchstaben durch andere ersetzen
Von PH234X im Forum .NET Windows FormsAntworten: 2Letzter Beitrag: 09.01.09, 16:43 -
Buchstaben durch entsprechende Bilder ersetzen
Von therealcharlie im Forum PHPAntworten: 4Letzter Beitrag: 03.09.05, 13:23 -
Buchstaben durch Grafiken ersetzen
Von morgenstern im Forum PHPAntworten: 2Letzter Beitrag: 18.08.04, 20:04 -
ersetzen von buchstaben in text
Von Pago im Forum Delphi, Kylix, PascalAntworten: 2Letzter Beitrag: 10.02.04, 17:22





Zitieren

Login





