Avatar billede netcodericeo Nybegynder
15. oktober 2008 - 12:56 Der er 8 kommentarer og
1 løsning

Parse Date fra en string

Hej eksperter jeg har en liste med lange strenge som ser sådan her ud.

---------------------string 1-----------------------------
RE120526~Day tour~asd~Hogni~Gylfason~finnur@atom01.is~asd ~asd~Germany~12312312~hotel_borg~asflæasdfjka as fas f~~~~ Hogni Gylfason~09.10.2008 01:21~atom01~Golden Circle~EUR~RE-04~24.10.2008~1~0~0~~83~

------------------string 1 slut ----------------------------


------------------string 2 ----------------------------------

RE120502~Day tour~asd~Hogni~Gylfason~finnur@atom01.is~asd ~asd~Germany~12312312~hotel_fron~Comments~~~~ Hogni Gylfason~07.10.2008 01:37~110~Golden Circle~EUR~RE-04~30.10.2008~2~2~2~~83~

-------------------string 2 slut------------------------------


men det jeg gerne vil gøre at jeg vil parse der hvor dato kommer og se efter en macher min søgning f.eks. at jeg søger på datoen 07.10.2008

er der en måde jeg kan parse strengene igennmen?

på forhånd tak
Avatar billede 2c Nybegynder
15. oktober 2008 - 13:39 #1
Du kan bruge contains.

hvis du har en streng:
string t = "dfsdfdsf07.10.2008sdfsdfdsvjlksdfjs";
Så vil funktionen:
t.Contains("07.10.2008");
returnere true.
Avatar billede netcodericeo Nybegynder
15. oktober 2008 - 14:05 #2
Virker så ikke helt fordi hvis jeg har en dato som er 08.10.2008 så skal den også tag den med fordi hvis jeg søger fra 07.10.2008 til 10.10.2008.
Avatar billede 2c Nybegynder
15. oktober 2008 - 14:15 #3
Du kan lave en for løkke, der kører alle datoerne igennem i dit dato range, og så laver en contains på strengen med hver af dem.
Avatar billede netcodericeo Nybegynder
15. oktober 2008 - 15:48 #4
hmm det forstår jeg ikke helt. kan du give et lille eksempel?
Avatar billede arne_v Ekspert
16. oktober 2008 - 02:25 #5
Jeg ville gribe det anderledes an og parse datoerne ud.

Eksempel:

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text.RegularExpressions;

namespace E
{
    public class Program
    {
        private static Regex re = new Regex(@"\d{2,2}\.\d{2,2}\.\d{4,4}", RegexOptions.Compiled);
        public static List<DateTime> FindDates(string s)
        {
            List<DateTime> res = new List<DateTime>();
            foreach(Match m in re.Matches(s))
            {
                res.Add(DateTime.ParseExact(m.Value, "dd.MM.yyyy", CultureInfo.InvariantCulture));
            }
            return res;
        }
        private static void Test(string s)
        {
            Console.WriteLine(s);
            List<DateTime> dtlst = FindDates(s);
            foreach(DateTime dt in dtlst)
            {
                Console.WriteLine(dt);
            }
        }
        public static void Main(string[] args)
        {
            string s1 = "RE120526~Day tour~asd~Hogni~Gylfason~finnur@atom01.is~asd ~asd~Germany~12312312~hotel_borg~asflæasdfjka as fas f~~~~ Hogni Gylfason~09.10.2008 01:21~atom01~Golden Circle~EUR~RE-04~24.10.2008~1~0~0~~83~";
            string s2 = "RE120502~Day tour~asd~Hogni~Gylfason~finnur@atom01.is~asd ~asd~Germany~12312312~hotel_fron~Comments~~~~ Hogni Gylfason~07.10.2008 01:37~110~Golden Circle~EUR~RE-04~30.10.2008~2~2~2~~83~";
            Test(s1);
            Test(s2);
            Console.ReadKey();
        }
    }
}
Avatar billede netcodericeo Nybegynder
16. oktober 2008 - 14:29 #6
Hvordan kan jeg udvide Regular expression'en sådan den også tager dato'er som for eksempel 09.10.2008 01:21? Ellers funger det meget fint. =)
Avatar billede arne_v Ekspert
16. oktober 2008 - 15:37 #7
Ja da.

Du aendrer bare regex udtrykket og ParseExact udtrykker til at inkludere timer og minutter.
Avatar billede netcodericeo Nybegynder
16. oktober 2008 - 16:42 #8
arne v jeg brugte din løsning mange tak for det. lige lige et svar så du kan få dine points.
Avatar billede arne_v Ekspert
16. oktober 2008 - 16:50 #9
svar
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