Avatar billede mik789 Nybegynder
04. juni 2002 - 14:56 Der er 11 kommentarer og
1 løsning

variabler i regExp

Her er et eksempel fra http://developer.netscape.com/docs/manuals/js/client/jsref/index.htm
Det drejer sig om brugen af replace() i en tekststreng:

<SCRIPT>
str = "Twas the night before Xmas...";
newstr=str.replace(/xmas/i, "Christmas");
document.write(newstr)
</SCRIPT>

Men hvis nu man vil have det sådan at der i stedet for "Xmas" skal kunne stå ikke kun "Christmas", men en hvilken som helst begivenhed som brugeren har lyst til at se i strengen på Xmas' plads ("Peter's birtday", "The last election" eller whatever), så har man brug for en variabel der står for en streng der sættes ind senere, f,eks. i kaldet til en funktion. Hvordan propper man sådan en variabel ind i en regExp? Eller m.a.o. hvad skal der stå i stedet for /xmas/ i ovenstående eksempel, hvis den tekst der skal sættes i stedet er repræsenteret ved en variabel?

Avatar billede mik789 Nybegynder
04. juni 2002 - 15:02 #1
er det klart?... kaldet til en funktion: jeg mener f.eks. noget i stil med:

function choseEvent (event) - hvor "event" er den variabel, jeg ønsker at sætte ind i stedet for xmas
Avatar billede ras2000 Nybegynder
04. juni 2002 - 15:14 #2
<SCRIPT>
function udskift(strengen){
str = "Twas the night before Xmas...";
newstr=str.replace(/xmas/i, strengen);
document.write(newstr)
}
</SCRIPT>
Avatar billede mikoalngelo Nybegynder
04. juni 2002 - 15:19 #3
<SCRIPT>
str = "Twas the night before Xmas...";
newstr=str.replace(/xmas/i, prompt("Hvad skal der stå?", "Christmas"));
document.write(newstr)
</SCRIPT>
Avatar billede mikoalngelo Nybegynder
04. juni 2002 - 15:20 #4
upsvar
Avatar billede mik789 Nybegynder
04. juni 2002 - 15:21 #5
OK, så mit spørgsmål var altså IKKE klart. Formulere det om, så vent lige...
Avatar billede jakoba Nybegynder
04. juni 2002 - 15:26 #6
<SCRIPT>
function udskift_ig( stykke, alternativ  langSstreng){
    var iabel = new RegExp( stykke, "ig" )
    var newstr = langStreng.replace( iabel, alternativ );
    document.write(newstr)
}; //end idskift_ig( string, string, string )
</SCRIPT>
Avatar billede jakoba Nybegynder
04. juni 2002 - 15:27 #7
Ups. kun 1 s i langStreng
Avatar billede mik789 Nybegynder
04. juni 2002 - 15:30 #8
Variablen skal repræsentere det, der står i strengen, ikke det der skal stå i stedet. Så¨situationen er altså snarere:

Hvis man i denne streng: "Twas the night before Xmas..." vil have mulighede for at skifte et hvilket som helst enkelt ord i strengen ud med et hvilket som helst andet enkelt ord, hvad gør man så?

Hvis man senere har en funktion som f.eks.

function erstatOrd(ord, erstatning) - der senere kaldes med onclick="java script:erstatOrd('night','day') for at få strengen "Twas the day before Xmas..." i stedet for den oprindelige streng. I dette tilfælde skal man have variablen 'ord' ind i den oprindelige regexp på xmas' plads.

Så det er sp. om en variabel på søgerens plads, ikke på erstatterens.
Er det klarere nu?
Avatar billede ras2000 Nybegynder
04. juni 2002 - 15:35 #9
<SCRIPT>
function udskift(streng1, streng2){
str = "Twas the night before Xmas...";
newstr=str.replace(streng1, streng2);
document.write(newstr)
}
</SCRIPT>
Der bruger du ikke rigtig regeksp, men finder bare den streng der er sendt til funktionen.
Avatar billede mik789 Nybegynder
04. juni 2002 - 15:38 #10
prøver lige....
Avatar billede mik789 Nybegynder
04. juni 2002 - 15:44 #11
jamen det var jo slet ikke så kompliceret...... Typisk ;-)
Avatar billede ras2000 Nybegynder
04. juni 2002 - 15:48 #12
Nej, det er egentlig det værste ved regexp, det lyder så indviklet. Men hvis man sætter sig ind i syntaksen, kan det sateme også bruges til meget.
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