Avatar billede MadsHaupt Juniormester
07. februar 2014 - 22:01 Der er 5 kommentarer og
1 løsning

string.replace virker ikke som den skal.

string.replace funktionen erstatter kun det første element for eksempel bliver
"a.b.c.d.e.f".replace(".", " ")
til "a b.c.d.e.f", den burde erstatte alle elementer, testet i firefox, chrome og internet explorer, mit spørgsmål er hvordan kan løse det her problem?.
Avatar billede MadsHaupt Juniormester
07. februar 2014 - 22:04 #1
Hvis det ikke kan lad sig gøre at få string.replace funktionen til at virke, så må i gerne kommer med nogle gode input om hvorfor det ikke kan lad sig gøre og hvad jeg skal bruge i stedet for string.replace funktionen.
Avatar billede Slater Ekspert
07. februar 2014 - 22:21 #2
Det er meningen replace-funktionen kun erstatter én ting ad gangen. Jeg har heller aldrig forstået hvorfor. Du kan køre den i et loop indtil alting er erstattet, men det nemmeste er at lave strengen om til et regular expression og give den en global modifier.

Altså f.eks. "1.2.3.4.5".replace(/\./g, " ");
Avatar billede MadsHaupt Juniormester
08. februar 2014 - 15:38 #3
Kan du ikke fortælle lidt om hvad "/\./g" betyder?.
Avatar billede Slater Ekspert
08. februar 2014 - 16:13 #4
Selvfølgelig.

I regular expressions (eller i hvert fald Javascripts implementering - der findes mange udgaver) skal der skråstreger i start og slut af sætningen. Det er altså ligesom anførselstegn i en alm. tekststreng.
Alt efter den sidste skråstreg er udenfor regex-sætningen, og er i stedet modifiers - bogstaver der ændrer hvordan udtrykket skal fortolkes. "g" står for global, og betyder at regex'en skal udføres på så meget som muligt, i stedet for at stoppe efter første match.

Selve regex-udtrykket består altså kun af det mellem skråstregerne, i dette tilfælde "\."

I regex har punktum en anden betydning - det betyder alle tegn. Her vil vi ikke have det til at bruges sådan, vi vil have det til at opfattes som tegnet punktum. Derfor en backslash foran, som "escaper" tegnet, så det bliver opfattet bogstaveligt.

"/\./g" betyder altså ganske simpelt "find alle punktummer".

"/\./" ville gøre det samme som din replace - det betyder "find første punktum".

"/hej/g" vil finde alle steder der står "hej" i en tekst.
Avatar billede MadsHaupt Juniormester
08. februar 2014 - 21:59 #5
OK, viperine skriv et svar så får du point.
Avatar billede Slater Ekspert
09. februar 2014 - 08:13 #6
.
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