Till Startsidan
JavaScript.nu / Perl-kurs / S�k och ers�tt i str�ngar

L�R DIG ATT PROGRAMMERA PERL
S�k och ers�tt i str�ngar

Det vi nu ska l�ra oss �r modifiering av str�ngar, dvs att �ndra inneh�llet i en str�ng. I v�rt satt ska vi g�ra detta med "s�k och ers�tt"-metoden. Vi kommer att ange vad vi vill ers�tta och med vad detta ska ers�ttas s� sk�ter Perl resten.
Detta har flera likheter med hur man s�ker genom str�ngar, s� du kommer att f� anv�nda dina kunskaper fr�n f�reg�ende kapitel n�r du b�rjar med detta kapitel.
#!/usr/bin/perl
print "Content-type:text/html\n\n";

$saga="Mors lilla olle i skogen gick.";
$antalL=($saga =~ s/l/L/g);

print "I v�r saga fanns $antalL l.\n";
print "Sagan �r nu:\n";
print "$saga";


Utmatning:
I v�r saga fanns 5 l.
Sagan �r nu:
Mors LiLLa oLLe i skogen gick.
Som du ser �r returv�rdet till skillnad fr�n s�kningarna vi tidigare gjort inte sant (1) eller falskt (''), nu �r det ist�llet antalet utbytningar som gjorts.
�ven nu kan vi anv�nda oss av de "specialtecken" vi tidigare l�rt oss, s� som punkt (.), plus (+), asterix (*) etc.

Nedan visar jag n�gra exempel s� du ska kunna se hur detta fungerar. Jag har gett exempel p� hur str�ngen $str �ndras om man har olika v�rden p� det man s�ker efter och det som man ers�tter detta med. Jag har �ven skrivit ner hur m�nga ers�ttningar det totalt blir.

T�nk ocks� p� att n�r jag skrivit ett \X (X = ett tecken) nedan s� symboliserar det inte ett backslash f�ljt av tecknet jag angett, utan det symboliserar det tecken som detta motsvarar. Exempel:
\n motsvarar ett radbyte.
\@ motsvarar ett snabel-a.
Det som tas bort/byts ut �r markerat i tabellen f�r din underl�ttnad att f�rst� vad som har h�nt.

F�r att du ska se vad som �r vad i tabellen nedan kan du j�mf�ra kolumnernas rubriker med raden neda.
$nr=($str =~ s/s�kEfter/ers�ttMed/g);

s�kEfter
ers�ttMed
$str (f�re)
$str (efter)
$nr
&
\n
name=ida&psw=glad&sesson=0032
name=ida\npsw=glad\nsesson=0032
2
<
&lt;
<I>Kursiv</I>
&lt;I>Kursiv&lt;I>
2
\D
(inget)
ID:67912;
67912
4
[aeiou]
(inget)
JavaScript.nu
JvScrpt.n
4
<.*>
(inget)
Inga<B>taggar</B>h�r
Ingah�r
1
<[^>]*>
(inget)
Inga<B>taggar</B>h�r
Ingataggarh�r
2
<!--.*-->
(inget)
aa<!--b\nb-->cc
aa<!--b\nb-->cc
'' (0)
<!--(.|\n)*-->
(inget)
aa<!--b\nb-->cc
aacc
1
\D+\d?:
\n
user:264;user2:742;password3:643
\n254\n742\n643
3
\w+\@\w+\.\w{2,3}
[CENSUR]
email=julia\@abc.com&name=julia
email=[CENSUR]&name=julia
1
[A-Za-z]+:\/\/[\w-]+\.[^\s<>"']+
URL
<A HREF="ftp://sida.com/katalog/">http://sajt.nu/fil.html</A>
<A HREF="URL">URL</A>
2

Kolla noga p� alla exemplen och f�rs�k f�rst� vad som h�nt i vart och varje fall. Som du ser anv�nds en hel del specialtecken fr�n f�reg�ende kapitel. Minns du inte vad de olika tecknena symboliserade, �ppna kapitel 11 i ett nytt f�nster och kolla d�r.

Som du ser �r detta ett ytterst kraftfullt verktyg i Perl och du kommer med st�rsta sannolikhet f� stor anv�ndning av det, oavsett vad f�r sorts script du har planerat att skapa.

Innan detta kapitel tar slut ska jag p�minna dig om att du precis som n�r du s�kte i f�rra kapitlet kan v�lja att du ska g�ra s�kningen utan att skillnad tas till STOR och liten bokstav. Du l�gger d� bara till ett "i" efter tredje slashet. Dvs, ist�llet f�r...
$nr=($str =~ s/s�kEfter/ers�ttMed/g);
...s� ska du ha denna rad...
$nr=($str =~ s/s�kEfter/ers�ttMed/gi);

Vill du bara ers�tta f�rsta exemplaret av s�kEfter i $str (till skillnad fr�n vad vi hittills gjort, att ers�tta alla s�kEfter som hittas i $str), ta d� bort det "g" som vi nu haft efter tredje slashet. Tas detta bort g�rs bara en �ndring (det f�rsta s�kEfter ers�tts med ers�ttMed).


Ja, d� var denna Perl-kurs avslutad. Om du vill veta n�r nya delar kommer, registrera dig f�r JavaScript.nu's nyhetsbrev (skickas ut ca 6 g�nger om �ret). Sist men inte minst vill jag p�minna om att �vning ger f�rdighet. Det b�sta s�ttet att l�ra sig Perl �r att t�nka ut ett script man vill ha och sedan skapa det. Vartefter som kommer du att l�ra dig mer och mer om hur du g�r effektiva och l�tt justerbara script som p� b�sta s�tt l�ser olika problem, vilket i sig �r lika sv�rt som sj�lva spr�ket Perl.
Lycka till!

[Perl guiden]






Copyright © Omid Rouhani 1997-2022; Alla r�ttigheter reserverade.
Guider: [ HTML guide ] - [ JavaScript guide ] - [ DHTML guide ] - [ Perl guide ] - [ Sitemap ]