Avatar billede neoman Novice
22. oktober 2007 - 23:26 Der er 28 kommentarer og
1 løsning

Invers funktion af string.split

Jeg er fanget i at skulle opbevare adskillige integer værdier i en streng. Planen er at skrive "i;j;k" og når jeg skal have værdierne ud, så bruger jeg en temp(2) string


temp=string.split(";") og derpå cint(temp(0))  osv

Når jeg nu skal opdatere en værdi, så er det vel den modsatte vej:

temp(0)=i.tostring & ";"
temp(1)=k.tostring & ";" osv

og så
minStreng = temp(0) & temp(1) & ......


findes der en mere koncis/hurtigere måde at gøre det på ?
Avatar billede softspot Forsker
22. oktober 2007 - 23:31 #1
Der må da være en Join (ligesom i gode gamle VBScript ;-))

Altså

temp.Join(";")
Avatar billede neoman Novice
22. oktober 2007 - 23:35 #2
det lyder lige som noget for mig, men VS vil ikke æde den. Er det noget som gemmer sig i en eller anden namespace ?
Avatar billede softspot Forsker
22. oktober 2007 - 23:36 #3
Nå, det var åbenbart:

string.Join(";", temp)
Avatar billede kalp Novice
22. oktober 2007 - 23:36 #4
er det.

string.Join(";",temp);

?
Avatar billede kalp Novice
22. oktober 2007 - 23:37 #5
:)
Avatar billede neoman Novice
22. oktober 2007 - 23:37 #6
tada fandt ud af det .. samme svar som kalp of coz :)
Avatar billede kalp Novice
22. oktober 2007 - 23:38 #7
softspot fik også lige fanget den:)
Avatar billede neoman Novice
22. oktober 2007 - 23:38 #8
og softspot osse .. ok boyz tak.. bare smid nogle svar til megabillioner af trædollars:)
Avatar billede kalp Novice
22. oktober 2007 - 23:39 #9
Du sender bare til softspot..
han havde også styr på det:)
Avatar billede neoman Novice
22. oktober 2007 - 23:40 #10
BTW -  hvad med mit integer<->string cirkus - er der også noget smartere til det ?
Avatar billede neoman Novice
22. oktober 2007 - 23:41 #11
Jeg mener - er der måske noget som SAMTIDIGT laver en integer array om til strings og joiner dem ? (og omvendt) ?
Avatar billede softspot Forsker
22. oktober 2007 - 23:43 #12
Det er OK at dele :-)
Avatar billede softspot Forsker
22. oktober 2007 - 23:45 #13
Hmmm... jeg har ikke lige nogen fiks løsning til det med typekonvertering (jeg sad lige og kiggede efter en templated version af Split, men der var ikke lige nogen som sprang i øjnene :-))
Avatar billede neoman Novice
22. oktober 2007 - 23:47 #14
Jeg har også bladret lidt rund omkring uden at se noget - tænkte at jeg havde overset noget. Nå - men kalp sagde pas, så du må passe godt på dine nyerhvervede rigdomme:)
Avatar billede kalp Novice
22. oktober 2007 - 23:50 #15
Du kan godt lave en quick convert på sådan noget..

f.eks

string[] array = { "1", "2" };
            int[] tal = Array.ConvertAll(array, new Converter<string, int>(ParseInt));

og metoden

public static int ParseInt(string str)
        {
            return int.Parse(str);
        }

tilsvarende kan du gøre det omvendt...
Avatar billede kalp Novice
22. oktober 2007 - 23:51 #16
Det er i hvertfald pænere end, at loope det hele igennem og parse det over i et nyt array..
Avatar billede softspot Forsker
22. oktober 2007 - 23:52 #17
Jeg sad også lige og lurede på ConvertAll, men kunne ikke lige gennemskue hvordan man skulle få flikket den converter sammen... men det ved jeg så nu :)
Avatar billede kalp Novice
22. oktober 2007 - 23:53 #18
softspot >> for det meste er tingene ikke svære - men du har ret i det kan være svært, at gennemskue tingene første gang:D
Avatar billede softspot Forsker
22. oktober 2007 - 23:57 #19
kalp >> enig - jeg har bare ikke arbejdet med templated typer endnu, men det er klart noget jeg skal have luret lidt på i den nærmeste fremtid - jeg er først lige kommet over på .NET 2.0 for en måned siden, så der er lige nogle "enkelte" features som ikke er helt på plads endnu ;-)
Avatar billede softspot Forsker
22. oktober 2007 - 23:58 #20
Aj, det er faktisk 1½ måned siden...
Avatar billede neoman Novice
22. oktober 2007 - 23:59 #21
det må jeg lige  tygge lidt på, kan nemlig ikke helt overskue om ville jeg vinde noget ved det ?? Jeg har faktisk kun arrays på 3 måske 4 integers, bare en hel masse af dem , that's all
Avatar billede neoman Novice
23. oktober 2007 - 00:00 #22
og så ligge træningen - hvad gør den hvis jeg har ingenting i et felt - smider den et 0 ud eller en exception ? :)
Avatar billede softspot Forsker
23. oktober 2007 - 00:04 #23
Den logik må ligge i ParseInt-funktionen. Her kan du jo lave en betingelse der checker om str er tom og i så fald returnere 0...
Avatar billede softspot Forsker
23. oktober 2007 - 00:05 #24
public static int ParseInt(string str)
        {
            return (str.Length==0?0:int.Parse(str));
        }
Avatar billede neoman Novice
23. oktober 2007 - 00:10 #25
Må lige kigge på det senere (i morgen) - alt dette her ligger i en rekursiv funktion som lige gik ned med et brag med stack overflow , så jeg har vist ikke helt styr på mine strenge:)

tak for hjælpen.
Avatar billede kalp Novice
23. oktober 2007 - 00:12 #26
jeg ville lave metoden sådan her..

  public static int ParseInt(string str)
        {
            int value = 0;
            int.TryParse(str,out value);
            return value;
        }
Avatar billede softspot Forsker
23. oktober 2007 - 00:16 #27
kalp >> Jeg synes min er cool'er ;D - men din er mere intuitiv :-)

neoman >> Tak for point! :-)
Avatar billede kalp Novice
23. oktober 2007 - 00:18 #28
softspot >>

din burde måske have været

return (string.IsNullOrEmpty(str)?0:int.Parse(str));

ellers fejler den jo i null situationer:)

oh well.. ikke mere snak hehe:D
Det er dog hyggeligt nok at se de forskellige løsningsmuligheder der er:)
Avatar billede softspot Forsker
23. oktober 2007 - 00:28 #29
kalp >> point taken! :-)
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