Avatar billede fri3 Nybegynder
15. maj 2002 - 10:01 Der er 8 kommentarer og
1 løsning

split af linier med \n

Jeg har et problem med split,
der går du på at jeg skal hente en hjemmeside fra nettet, og derefter skal jeg parse filen igennem.
Jeg får en streng tilbage, og denne skal jeg så dele på linieskift.
Jeg har brugt :
my @lines=split(/\n/,$data);

Dette virker ikke helt som det skulle. Jeg ville høre om der ikke er en mulighed for at beholde \n i slutningen af hver linie selvom den bliver delt ?
Avatar billede erikjacobsen Ekspert
15. maj 2002 - 11:02 #1
Du kan jo efterfølgende sætte den på - der er flere måder. Men hvorfor
skal du have den?
Avatar billede fri3 Nybegynder
15. maj 2002 - 11:25 #2
Det går ikke med at sætte den på, da det ikke skal med på den sidste linie. Jeg ville bare høre om det kunne lade sig gøre med split, eller om der var en anden funktion der kunne.
Avatar billede erikjacobsen Ekspert
15. maj 2002 - 12:37 #3
Hvis du skal skrive den ud igen bruger du bare join på dit array med
et \n som sammenlimningstegn

Men hvorfor?
Avatar billede erikjacobsen Ekspert
15. maj 2002 - 13:32 #4
og det kan du gøre som

  print join("\n",@lines);
Avatar billede eeyore Nybegynder
12. juni 2002 - 01:29 #5
Du kan evt. sætte en andet tegn ind først, som du ved ikke forekommer(f.eks. carriage return \r), og så splitte på det:

$data = s/\n/\n\r/;
my @lines = split(/\r/,$data);
Avatar billede eeyore Nybegynder
12. juni 2002 - 01:30 #6
uups... skulle have været:

$data = s/\n/\n\r/g;
my @lines = split(/\r/,$data);
Avatar billede eeyore Nybegynder
12. juni 2002 - 01:31 #7
Verdammt... jeg er træt *g*:

$data =~ s/\n/\n\r/g;
my @lines = split(/\r/,$data);
Avatar billede uffehellum Nybegynder
19. juni 2002 - 11:33 #8
Du kan bruge en zero-with look-behind assertion.  Så får newline lov til at blive på hver linie.

@d = split /(?<=\n)/, $data;
print '<>';
for (@d) {
    print '*' . $_;
}
print '<>';
Avatar billede fri3 Nybegynder
24. juni 2002 - 13:02 #9
Tak for jeres svar, det var faktiskt Uffes svar jeg fiskede efter. Tak skal du ha'.
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
Kurser inden for grundlæggende programmering

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