Avatar billede soerenlyn Nybegynder
21. november 2007 - 23:08 Der er 7 kommentarer og
1 løsning

Dele string op i et array ved < og >

Hej Eksperter.

Jeg ønsker en reqexp-funktion der kan dele denne string op:

'Fødselsdag!<br name="ole">Hurra!<p align="left"><img alt="hello" name="ole" style="border:1px solid blue;background-color: red;">Hello world!</p><span>Yeah!</span>'

og til et array som så sådan ud:

var arrStr=new Array('Fødselsdag!','<br name="ole">','Hurra!','<p align="left">','<img alt="hello" name="ole" style="border:1px solid blue;background-color: red;">','Hello world!','</p>','<span>','Yeah!','</span>');

Kan de løses? Hvis ikke - kan det så løses med noget javascript?
Jeg kan godt selv alve en funktion i javascript der finder < og så finder frem til > og så deler op, men det vil blive noget bøvlet noget ..
Avatar billede jensgram Nybegynder
22. november 2007 - 17:49 #1
Hmm - http://www.regular-expressions.info/javascript.html -> "Regexp Methods of The String Class"

.split() kunne bruges, men hvis den fjerner de/t tegn den matcher, så får du ikke helt det rigtige resultat:

arrStr = str.split(/[<>]/)
Avatar billede soerenlyn Nybegynder
22. november 2007 - 22:02 #2
Den kender jeg godt - men ja som du selv siger, så fjerner den <>-tegnene, og det kan jeg ikke bruge til noget :)
Avatar billede jensgram Nybegynder
23. november 2007 - 11:36 #3
Så hedder det enten split i et andet sprog eller en hjemmestrikket splitter - men sidstnævnte skulle vel heller ikke være uoverkommeligt, idet split-tegnene er meget begrænsede.
Avatar billede roenving Novice
24. november 2007 - 15:21 #4
Ja, en hjemmelavet, der gør det 'langsomt' ...

Altså først splitte på det ene tegn (f.eks. <), indsætte dette tegn først i alle splits (undtaget den første), splitte på det andet, og indsætte det bagest i de nye splits (undtaget den sidste !-)

-- og det skal så smides i et helt nyt array:

<script type="text/javascript">
var txt = 'Fødselsdag!<br name="ole">Hurra!<p align="left"><img alt="hello" name="ole" style="border:1px solid blue;background-color: red;">Hello world!</p><span>Yeah!</span>';
var arrStr = [];
txt = txt.split("<");

if(txt[0] != "")
  arrStr.push(txt[0]);
for(i=1,im=txt.length;im>i;i++){
  txt[i] = "<" + txt[i];
  txt[i] = txt[i].split(">");
  if(txt[i].length == 2){
    txt[i][0] += ">";
    arrStr.push(txt[i][0]);
    if(txt[i][1] != "")
      arrStr.push(txt[i][1]);
  }else
    arrStr.push(txt[i]);
}
alert(arrStr);
</script>
Avatar billede soerenlyn Nybegynder
04. april 2008 - 14:01 #5
Det er da lidt længe siden jeg har stilt dette spørgsmål :)

Jeg havde håbet på det kunne løses med reg-exp, men smid mig et svar for din tid roenving :)
Avatar billede roenving Novice
04. april 2008 - 15:50 #6
Velbekomme '-)
Avatar billede roenving Novice
04. april 2008 - 16:18 #7
-- og tak for point ;~}
Avatar billede soerenlyn Nybegynder
05. april 2008 - 10:35 #8
..og tak for hjælpen :)
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

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