Avatar billede lifeweb Nybegynder
19. maj 2004 - 17:52 Der er 17 kommentarer og
1 løsning

Kommasepareret string? Skille denne ad

Hej...

Jeg har en kommasepareret string som jeg ønsker at skille ad via JavaScript.

Stringen indeholder dato og tid, eksempelvis:
01-01-2001,01:01:01

Hvordan hiver jeg disse to værdier ud så de bliver:
dato = 01-01-2001
tid = 01:00:00

Og hvordan laver jeg efterfølgende et pænt output der eksempelvis kunne skrive:
d. 01-01-01 kl. 01:01

Altså sortere ligegyldige sekunder væk...
Avatar billede roenving Novice
19. maj 2004 - 17:58 #1
str = "01-01-2001,01:01:01";
dato = str.split(",")[0];
tid = str.split(",")[1];

Men helt nemt:

str = str.replace(/^(\d\d-\d\d-\d{4})\,(\d\d\:\d\d)\:\d\d$/,"d. $1 kl. $2")
Avatar billede roenving Novice
19. maj 2004 - 18:04 #2
-- og hvis sekunderne ikke altid er med:

str = "01-01-2001,01:01";
str = str.replace(/^(\d\d-\d\d-\d{4})\,(\d\d\:\d\d)(\:\d\d)?$/,"d. $1 kl. $2")
alert(str);
Avatar billede lifeweb Nybegynder
19. maj 2004 - 18:09 #3
hmm...

har en funktion der hedder skiftdato

jeg bruger den til at skrive til en div på flg måde:
function skiftdato(tekst){
document.getElementById("dato").innerHTML = tekst;}

Skulle jeg så ikke kunne udvide den på flg måde:
function skiftdato(tekst){
dato = tekst.split(",")[0];
tid = tekst.split(",")[1];
document.getElementById("dato").innerHTML = tekst;}

Det kan jeg ihvertfald ikke - hvad skyldes det..?
Avatar billede roenving Novice
19. maj 2004 - 18:17 #4
Er din tekst den kommaseparerede, og du vil have resultatet i det pæne format:

function skiftdato(tekst){
document.getElementById("dato").innerHTML = tekst.replace(/^(\d\d-\d\d-\d{4})\,(\d\d\:\d\d)(\:\d\d)?$/,"d. $1 kl. $2");
}
Avatar billede roenving Novice
19. maj 2004 - 18:19 #5
-- og hvis det er fordi du vil bruge dato og tid udenfor funktionen, vil det være smart at erklære variablerne udenfor også:

var dato,tid;
function skiftdato(tekst){
dato ...
Avatar billede lifeweb Nybegynder
19. maj 2004 - 18:25 #6
perfekt...

Kunne af en eller anden grund ikke få split-funktionen til at virke, men fandt ud af at bruge det, og separerer det bare fra hinanden via ASP senere i forløbet...

mange tak...

du skulle jo næsten have penge for den slags gode gerninger :)

fortsat god dag

(smid et svar hvis du ønsker point)
Avatar billede roenving Novice
19. maj 2004 - 18:26 #7
Velbekomme '-)
Avatar billede lifeweb Nybegynder
19. maj 2004 - 18:32 #8
lige et lille ekstra spørgsmål

hvordan ser koden ud hvis strengen er:
mandag,01-01-01,00:00:00
??
Avatar billede roenving Novice
19. maj 2004 - 18:39 #9
var dag,dato,tid;
function skiftdato(tekst){
dag = tekst.split(",")[0];
dato = tekst.split(",")[1];
tid = tekst.split(",")[2];
}

eller med den anden type ting:

function skiftdato(tekst){
document.getElementById("dato").innerHTML = tekst.replace(/^.*\,(\d\d-\d\d-\d{2,4})\,(\d\d\:\d\d)(\:\d\d)?$/,"d. $1 kl. $2");
}
Avatar billede roenving Novice
19. maj 2004 - 18:40 #10
-- og hvad fik du iøvrigt af fejl med split-funktionen ?-)
Avatar billede lifeweb Nybegynder
19. maj 2004 - 18:56 #11
den skriver "objektet understøtter ikke denne egenskab eller metode"

det er også ligegyldigt hvis bare jeg kan lave et output med replace.

tekst.replace(/^.*\,(\d\d-\d\d-\d{2,4})\,(\d\d\:\d\d)(\:\d\d)?$/,"d. $1 kl. $2");
udskriver dog ikke dagen...??
Avatar billede roenving Novice
19. maj 2004 - 18:57 #12
Nej, men det kan vi dog fylde på:

tekst.replace(/^(.*)\,(\d\d-\d\d-\d{2,4})\,(\d\d\:\d\d)(\:\d\d)?$/,"$1, d. $2 kl. $3");
Avatar billede roenving Novice
19. maj 2004 - 18:58 #13
.split virker kun overfor strengvariable, kan det være fordi du har det som en anden type variabel, et array f.eks. ?-)
Avatar billede lifeweb Nybegynder
19. maj 2004 - 18:58 #14
så virker...
og det er fint - det kan jeg let bruge efterfølgende...
Avatar billede lifeweb Nybegynder
19. maj 2004 - 18:59 #15
<snip>
.split virker kun overfor strengvariable
</snip>

det kunne sagtens være derfor :)

mange tak for hjælpen...
Avatar billede roenving Novice
19. maj 2004 - 18:59 #16
-- og tak for point ;~}
Avatar billede lifeweb Nybegynder
19. maj 2004 - 19:01 #17
når nu du er coadmin - kunne man så ikke foreslå hovedmændende at programmere en funktion mere ind i systemet.

Sådan at når man skrev kode så blev den markeret på en eller anden måde

på activedeveloper.dk har det været løst på denne måde:

hej med dig
<code>dette er noget kode</code>

Det er rart - dog er exp.dk et meget federe site..!
Avatar billede roenving Novice
19. maj 2004 - 19:08 #18
Jeg mener faktisk, at det har været diskuteret en gang i en længst svunden fortid, og et umiddelbart gæt kunne være, at den slags ikke giver mening, når der bliver lagt hundredevis af linjer kode ...

-- men mon ikke problemet for activedeveloper også hører sammen med sql-injection, altså at kode, hvis det ikke behandles særdeles omhyggeligt, kan lave problemer i database-scripts, her er det jo faktisk perfekt, at koden gengives uden nogen form for ændringer !-)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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