Avatar billede w13 Novice
06. oktober 2010 - 22:02 Der er 3 kommentarer og
1 løsning

Split streng ved mellemrum, dog ikke ved mellemrum inden for parenteser

Hej Eksperter.

Jeg har en streng, som kan indeholde ord adskilt af mellemrum. Fx:
word1 word2 word3(param1)

Disse deler jeg lige nu vha. JavaScript med funktionen .split(' ').

Nu oplever jeg så, at et af ordene ser således ud:
word(param1 param2)

Det har 2 parametre, og min split-funktion deler selvfølgelig ved mellemrummet i midten, hvilket jeg ikke er interesseret i.

Er der nogle, der kan hjælpe mig med en kode, der fortsat splitter ved mellemrum, dog ikke inden for parenteser? Løsningen må vel være noget RegExp, og der kommer jeg desværre hurtigt til kort.

På forhånd tak!

Med venlig hilsen
Tobias
Avatar billede ksoren Nybegynder
06. oktober 2010 - 22:40 #1
Uden regexp:

s = "word1 word2 word3(param1 param2)";
a = [];

var pos = 0;
var len = s.length;
var inside = 0;

for(var i=0; i<len; i++){
    if(s[i] == '(') inside++;
    else if(s[i] == ')') inside--;
    else if(s[i] == ' ' && inside == 0){
        a.push(s.substring(pos, i));
        pos = i+1;
    }
}
a.push(s.substring(pos));
Avatar billede w13 Novice
08. oktober 2010 - 11:55 #2
Det ser ud til at fungere fint indtil videre, så smid bare et svar. :)
Avatar billede w13 Novice
10. oktober 2010 - 12:56 #3
Point? :)
Avatar billede w13 Novice
21. oktober 2010 - 13:09 #4
Nå, jeg lukker her! :) Skriv, hvis du vil have point!
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