Avatar billede Kristian H Nybegynder
26. juli 2006 - 14:34 Der er 10 kommentarer og
2 løsninger

String Parse

Hej eksperter

Jeg modtager denne string tilbage fra en gameserver

infoResponse
\mapname\wtest4\g_needpass\0\g_match_time\Warmup\g_instagib\0\dmflags\16\gamedate\Jun 13 2006\gamename\Warsow\sv_pps\20\sv_maxrate\15000\protocol\7\sv_cheats\0\version\0.12 x86 Jun 13 2006 Win32 RELEASE\sv_maxclients\16\sv_battleye\1\sv_skilllevel\1\sv_hostname\Test server\g_tctf\10\g_gametype\tdm\clients\0
\challenge\

Hvordan Parser jeg denne string og smider de forskellige værdier ind i andre strings?

- TuDack
Avatar billede spif2001 Nybegynder
26. juli 2006 - 14:38 #1
En mulig fremgangsmåde:

string[] sArr = dinString.Split(new char[]{'\\'});
Avatar billede spif2001 Nybegynder
26. juli 2006 - 15:41 #2
Kom du videre?
Avatar billede Kristian H Nybegynder
26. juli 2006 - 21:45 #3
Tja... men skal nok bruge lidt mere hjælp. Vil jo også gerne have de forskellige værdier ind i andre strings.
Avatar billede innercitydk Nybegynder
27. juli 2006 - 01:30 #4
Det er et fast antal informationer du modtager som response hver gang går jeg ud fra. Hvis du ikke vil arbejde direkte med arrayet har du mulighed for at smide værdierne over i et antal foruddefinerede strenge.

F.eks:

string res1="", res2="", res3="", res4="", res5="";

            string[] sArr = dinString.Split(new char[] { '\\' });

            for (int i = 0; i < sArr.Length; i++)
            {
                switch (i)
                {
                    case 1:
                        res1 = sArr[i];
                        break;
                    case 2:
                        res2 = sArr[i];
                        break;
                    case 3:
                        res3 = sArr[i];
                        break;
                    case 4:
                        res4 = sArr[i];
                        break;
                    case 5:
                        res5 = sArr[i];
                        break;
                }
            }
            MessageBox.Show(res1+"\n"+res2+"\n"+res3+"\n"+res4+"\n"+res5);
Avatar billede innercitydk Nybegynder
27. juli 2006 - 01:32 #5
Til at teste ovenstående kode kan du bruge følgende streng som test værdi:

string dinString="\\hej\\med\\dig\\du\\gamle";
Avatar billede md_craig Nybegynder
27. juli 2006 - 02:09 #6
innercitydk >>

Hvorfor gøre det så besværligt?
din res1 = sArr[0]
din res2 = sArr[1]

osv...
Det er da godt nok en omvej at bruge en switch og for løkke...
Avatar billede innercitydk Nybegynder
27. juli 2006 - 02:38 #7
Tjah det har du ret i.. det blev også bare lige rystet hurtigt ud af posen :)
Avatar billede Kristian H Nybegynder
27. juli 2006 - 10:58 #8
innercitydk> Dit eksempel virker fint, men hvad er det som md_craig nævner? Kan det gøres mere simpelt?
Avatar billede innercitydk Nybegynder
27. juli 2006 - 11:45 #9
Ja lad os sige at der findes 10 strings i string arrayet. Der er ingen grund til at bruge en løkke til at gennemløbe arrayet, du kan nøjes med at bruge arrayet med indeksering:

string res1,res2,res3,res4,res5;

res1=sArr[0];
res2=sArr[1];
res3=sArr[2];
res4=sArr[3];
res5=sArr[4];

Der sker det samme, denne måde bruger dog mindre resourcer :)
Avatar billede Kristian H Nybegynder
28. juli 2006 - 14:02 #10
Det virker bare, smid et svar...
Avatar billede innercitydk Nybegynder
28. juli 2006 - 15:14 #11
Nice ;)
Avatar billede Kristian H Nybegynder
29. juli 2006 - 11:54 #12
Og lige 10 point til spif
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