Avatar billede GoofyDK Nybegynder
21. november 2010 - 13:36 Der er 6 kommentarer og
1 løsning

Et spørgsmål omkring læsning af text filer

Hej endnu engang.

Jeg fik en god løsning på det problem via: http://www.eksperten.dk/spm/924143

Jeg brugte denne løsning:

string tekst = "Test";
                                List<string> cencuredWords = new List<string>();
                                cencuredWords.AddRange(File.ReadAllLines(@"C:\ord.txt"));

                                IEnumerable<string> forbiddenWords = from s in cencuredWords where tekst.Split().Contains(s) select s;
                                string w = string.Join(", ", forbiddenWords);
                                if (w.Length > 0)
                                {
                                  Console.WriteLine("Fejl: " + w + ");
                                }

Det virker også super godt, men hvis jeg gerne vil have det udviklet lidt bedre. Så ledes, at hvis der f.eks. står dette i ord.txt:

www
.dk
.com

Så reklame ikke er tilladt. For at komme det problem til bunds brugte jeg .Replace(".", " ") - det virker også fint nok, men ville gerne have fjernet alle de Replacer. Så den hvis der er noget som står i ord.txt og matcher til det der står i min string "tekst", giver den fejl.

F.eks.

string tekst = "www.eksperten.dk";

Så skal den give fejl, fordi www og .dk er i string.
Også hvis de bare står:

string tekst = "hejwwwmedjer";

Så skal den også give fejl, fordi der er www i "tekst".

Håber i kan hjælpe mig videre fra problemet :-)
Avatar billede bvli Praktikant
21. november 2010 - 13:45 #1
IEnumerable<string> forbiddenWords = from s in cencuredWords where tekst.IndexOf(s) > -1 select s;
Avatar billede GoofyDK Nybegynder
21. november 2010 - 13:49 #2
Er det bare IndexOf der skal benyttes i den?
Så alt som måske bliver skrevet i en linje, der vil den finde ud af det?
Avatar billede bvli Praktikant
21. november 2010 - 13:53 #3
Det skulle jeg mene.
Avatar billede GoofyDK Nybegynder
21. november 2010 - 13:54 #4
Det ser sådan ud da jeg testede det. Læg et svar, og tak for hjælpen :-)
Avatar billede GoofyDK Nybegynder
21. november 2010 - 15:35 #5
Og hvis den skal læse alt i filen ord.txt som .ToLower(); Hvor skal denne så sættes?
Avatar billede bvli Praktikant
22. november 2010 - 09:35 #6
IEnumerable<string> forbiddenWords = from s in cencuredWords where tekst.IndexOf(s, StringComparison.OrdinalIgnoreCase) > -1 select s;

Jeg regner med, at det er fordi du vil undgå case sensitive sammenligning. Det gør du bedst på ovennævnte måde.
Avatar billede GoofyDK Nybegynder
22. november 2010 - 16:17 #7
Super tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester