Avatar billede Thomas Knudsen Nybegynder
22. februar 2004 - 22:29 Der er 13 kommentarer og
1 løsning

RegExp i replace()

Jeg har et textarea som man skriver nogle smiley-koder ind i. Nu vil jeg gerne ved visning af en profiltekst udskifte koden med et filnavn.

Jeg har ikon-koden et eet array og tilhørende filnavne i et andet array. Så vil jeg gerne køre en løkke hvor den leder efter en værdi fra array 1 og udskifter det med værdien fra array 2.

Mit problem er konstruktionen af regexp linjen. Den fatter det ikke helt, når jeg laver en streng sammensat af flere variabler.

Her er koden:
function code2icon(str) {
var path = "../images/icons/";
var codearray = getIconCodes();
var picarray = getIconNames();
var temp = new String(str);

for (x=0;x=codearray.lenght;x++){
var re = /\"+codearray[x]+/g;

temp = temp.replace(re, path+picarray[x]);
}
return (temp);
}

Jeg tror jeg er på rette vej, men mangler lige lidt ekspertviden ;)
Avatar billede o-zone Nybegynder
22. februar 2004 - 23:00 #1
ved allerførste øjekasl har du i hvert fald en stavebøf i
for (x=0;x=codearray.lengTH;x++){
Avatar billede o-zone Nybegynder
22. februar 2004 - 23:00 #2
øjekasT that was! :)
Avatar billede roenving Novice
22. februar 2004 - 23:04 #3
Du skal have fat i en egentlig RegExp så ...

Ikke noget jeg selv har haft meget fat i, men noget à la dette:

<script language="javascript" type="text/javascript">
function code2icon(str) {
var path = "../images/icons/";
var codearray = ["\\[pic\\]"];
var picarray = ["<img src='../billede.jpg' height='25' width='25'>"];

for (i=0;codearray.length>i;i++){
re = new RegExp(codearray[i],"g");

str = str.replace(re, picarray[i]);
}

return str;
}
</script>

Bemærk specielt, at dit codearray skal indeholde dobbelte backslashes, hvis der indgår regexp-specialtegn !-)
Avatar billede roenving Novice
22. februar 2004 - 23:05 #4
Avatar billede o-zone Nybegynder
22. februar 2004 - 23:28 #5
prøv sådanher
---8<----------
<script language="javascript" type="text/javascript">
function code2icon(str) {
var path = "../images/icons/";
var codearray = ["\\:\\-\\)","\\:\\-\\(","\\:\\-\\|"];
var picarray = ["glad.gif","sur.gif","ligeglad.gif"];

    for (i=0;codearray.length>i;i++){
        re = new RegExp(codearray[i],"g");
   
        str = str.replace(re, "<img src='"+path+picarray[i]+"'>");
    }

    return str;
}

document.write(code2icon("Jeg er glad :-) og sur :-( og ligeglad :-|"));
</script>
---8<----------
... og byt så arraysene tilbage med dine egne funktioner s'fø'lig :)

og stik roenving pointene - det er hans løsning! :=)
Avatar billede roenving Novice
22. februar 2004 - 23:32 #6
>>o-zone

Fik du lige kigget lidt på RegExps også *g*
Avatar billede o-zone Nybegynder
22. februar 2004 - 23:51 #7
he he he :)
Ja - men jeg blev vist først færdig da du havde postet noget! ;)
Avatar billede roenving Novice
22. februar 2004 - 23:55 #8
Ja, og også fint nok, at du så tog min kode som udgangspunkt *lol*
Avatar billede Thomas Knudsen Nybegynder
23. februar 2004 - 21:19 #9
Virker bare fint! Kom med et svar :)
Dog har jeg en sidste bøn

array[14] = "\\:\\-\\)\\(\\-\\:";
skulle stå for :-)(-:, men det bliver fortolket som :-)
Kan I hjælpe med hvordan man siger "fortolk dette som en blok"?
Er det noget med  [] uden om? Synes jeg har læst det et sted.
Avatar billede roenving Novice
23. februar 2004 - 23:40 #10
I hvert fald ikke [] (som betyder, at det imellem skal være enten/eller !-) ...

Forstår ikke rigtigt, at det er et problem, for jeg kan ikke få fejl !-)

-- els velbekomme '-)
Avatar billede Thomas Knudsen Nybegynder
24. februar 2004 - 08:31 #11
Jeg kigger lidt mere på det og så må jeg bare skifte koden ud med noget mere enkelt, hvis det ikke lykkes
Avatar billede o-zone Nybegynder
24. februar 2004 - 08:42 #12
Din sidste bøn er meget nemt løst ... du skal bare sørge for at strengen "\\:\\-\\)\\(\\-\\:" står før strengen "\\:\\-\\)" i dit array af smileys.
På den måde løbes brugerens streng først gennem for ":-)(-:", og du undgår at ":-)" vil starte med at fortolke halvdelen af strengen først.

(-:H@zze

roenving>>> slap du bare af din gamle pointluder - jeg beder jo netop ikke om point, da jeg bare havde skåret din løsning ud i pap ikke? ;-P~
Avatar billede o-zone Nybegynder
24. februar 2004 - 08:47 #13
...og "pointluder" er selvfølgelig ment i dybeste respekt! :)
Avatar billede Thomas Knudsen Nybegynder
24. februar 2004 - 10:40 #14
Mange tak O-zone
Løsningen var jo ligetil :)
Sidder på arbejde, men tester med det samme jeg kommer hjem.
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