Autor |
Beitrag |
avoid
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Mi 22.06.11 19:53
vorab: es geht mir um das arbeiten mit einer wörterbuch datei im .txt format
in der wörter untereinander gespeichert sind.
---------------------
ich hab heute in der Schule ein Zahlenräzel machen dürfen in dem man einige zeilen mit Zahlen gegeben hat.
diese zahlen mußten durch den jeweiligen buchstaben des Alphabet ersetzt werden um den text zu bekommen.
danach mußte man in den zeilen lösungswörter finden wovon nochmal bestimmte zeichen die endlösung gaben.
das alles war relativ einfach auf papier zu lösen auch ohne kryptoanalytisches wissen.
weil mich das thema anspricht hab ich zuhause eine kleine windows-forms anwendung geschrieben,
in die man die zahlen eingeben kann und die buchstabenreihen raus bekommt.
ich habe dazu ein array das A-Z in großbuchstaben enthält verwendet dann die eingabe mit Split in ein array gepackt
und dann die zahlen durch die buchstaben ersetzen lassen bevor das ergebnis ausgegeben wurde.
---------------------
jetzt habe ich die idee etwas weiter gesponnen und mich folgendes gefragt:
- ob ich die anwendung nicht dazu bekommen kann
in diesem buchstaben haufen einzelne wörter zu finden.
- ob ich diese evtl. farblich hervor heben kann.
- ob mir dabei eine wörterbuch datei hilft.
- wie ich das am einfachsten bewerkstelligen könnte.
---------------------
ich bin leider nur anfänger und kann mir nicht vorstellen
wie sowas programmiert werden könnte.
eine sog. wordlist mit jeder menge deutsch spracheiger wörter hab ich mir raus geladen.
doch geht das so einfach? eine zeile mit buchstaben einer liste von wörtern gegenüberstellen?
ich würde mich freuen wenn mir jemand tips geben kann.
ein par schlagwörter oder funktionsnamen die mir weiter helfen könnten
oder sogar code beispiele dazu fänd ich top.
---------------------
ich hänge euch mal meine anwendung als Visual C# 2010 Express Projekt rann
damit ihr es mal ausprobieren könnt.
Einloggen, um Attachments anzusehen!
Zuletzt bearbeitet von avoid am So 26.06.11 02:18, insgesamt 1-mal bearbeitet
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Sa 25.06.11 05:42
ich hab es jetzt geschaft die wordlist in eine arraylist zu lesen.
dazu habe ich folgende code teile verwendet.
C#-Quelltext 1: 2:
| using System.Collections; using System.IO; |
C#-Quelltext 1: 2: 3:
| public partial class Form1 : Form { ArrayList wordlist = new ArrayList(); |
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| public Form1() { InitializeComponent(); try { StreamReader list = new StreamReader("german.txt"); while (list.Peek() >= 0) { wordlist.Add(list.ReadLine()); } list.Close(); label1.Text = "Status: wordlist gefunden."; } catch { MessageBox.Show("german.txt nicht gefunden."); label1.Text = "Status: wordlist nicht gefunden."; } } |
wie ihr sehen könnt ist es garnicht so schwer gewesen,
knackpunkt war nur raus zu finden das ich mit Peek und ReadLine arbeiten muß.
------------------------------
offen ist aber noch immer die frage, wie ich nun einen string
mit dem inhalt der arraylist vergleichen kann.
mit match scheind das nicht zu klappen weil es vorkommen kann
das ein wort z.b. "hallo" so im string zu finden ist "ashallodw".
kann ich da sowas wie *hallo* verwenden?
gruß avoid
|
|
Th69
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Sa 25.06.11 10:34
Hallo avoid,
zuersteinmal: verwende anstatt der veralteten ArrayList besser die generische List:
C#-Quelltext 1: 2: 3:
| using System.Collections.Generic;
List<string> wordlist = new List<string>(); |
Dann brauchst du auch beim Zugriff auf diese Liste nicht immer in den passenden Datentyp zu konvertieren (casten).
Und dann zu deiner Frage:
Welche Match-Methode meinst du, die von der Regex-Klasse?
Um alle Wörter aus der Liste zu finden, welche in einem String vorkommen, könntest du auch die FindAll-Methode benutzen:
C#-Quelltext 1: 2:
| string text = "..."; List<string> = wordlist.FindAll(s => text.Contains(s)); |
(den Parameter für die Methode habe ich hier als Lambda-Ausdruck hingeschrieben - auch wenn das evtl. für dich als Anfänger noch etwas unverständlich erscheint, aber dies ist eine elegante und kurze Programmierweise, anstatt eine benannte Methode zu erstellen)
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Sa 25.06.11 12:48
|
|
Th69
      

Beiträge: 4798
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Sa 25.06.11 14:29
Hallo Kha,
an das Einfachste denk ich manchmal nicht
So kennt avoid wenigstens jetzt das Stichwort Lamda-Ausdruck bzw. lambda expression...
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Sa 25.06.11 15:38
danke schon mal für die bissherige hilfe.
ich bin bei der arraylist geblieben, die funktioniert ja soweit.
das ist jetzt der code abschnitt wo mit ich es getestet hab:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| string str = textBox1.Text; int i; for (i = 0; i < wordlist.Count; i++) { string arrline = Convert.ToString(wordlist[i]); if (str.Contains(arrline)) { listBox1.Items.Add(arrline); } } |
ich gebe also in textBox1 irgendwas ein und in listBox1 bekomm ich dann eine auflistung
der einträge die übereinstimmen. bis jetzt zwar nur einen aber immer hin.
jetzt hab ich nur noch ein problem:
------------------------------------
- mein string der mit der wordlist verglichen werden soll hat nur großbuchstaben
gibt es eine möglichkeit dieses "Contains" dazu zu bekommen nicht
so pingelig zu sein was die groß und klein schreibung an geht?
oder muß ich jetzt die wordlist um basteln das alles groß geschrieben wird?
das mit dem farblich darstellen des gefundenen wort lass ich wohl erst mal.
ich hab auch noch eine frage zu dem ".FindAll".
das kennt mein intellisense nicht.
muß ich da noch was einbinden?
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: So 26.06.11 02:16
unglaublich aber war. in der nacht hab ich eben die besten ideen.
hab meine kleine anwendung jetzt soweit das sie folgendes kann:
- man kann die nummern folge eines zahlenrätsel eingeben z.b. "1,19,8,1,12,12,15,4,23".
- die anwendung wandelt die zahlen in die buchstaben des alphabet um.
- dann vergleicht die anwendung die aneinanderreihung von buchstaben mit einem wörterbuch.
und gibt die wörter aus, die in der buchstabenreihe enthalten sind.
dann muß man nur noch das wort aus den möglichkeiten raus suchen, das gesucht ist.
z.b. ist hier der name einer stadt enthalten.
14,5,2,5,18,12,9,14,16,3
ich heng euch mal das projekt an für leute die es sich mal an kucken wollen.
es ist natürlich keine komplet lösung sondern nur ein kleines lern beispiel für mich.
viel spaß damit.
Einloggen, um Attachments anzusehen!
|
|
|