Jag undrar över en sak rörande global replace i Javascript.
Exempel:
str.replace(/Adam/g, "Bertil")
Om jag istället för adam velat använda strängen strNamn, hur skriver jag då?
Om jag vill göra replace på något som innehåller slash-tecken, hur skriver jag då? Exempelvis om jag vill byta ut "" mot "</b>"?
(Ursäkta om det här är elementärt, men alla börjar vi ju nånstans...)
Peter SMedlem sedan dec. 20025 483 inlägg str.replace(new RegExp(strNamn, "g"), "Bertil")
Escape:a '/' till '\/'.
Tack, men jag får det inte att fungera.
var txHTML = txTA;
stab="[b]"; stau="[u]"; stai="[i];"
endb="[/b]"; endu="[/u]"; endi="[/i];"
txHTML=txHTML.replace(/"/g,""");
txHTML=txHTML.replace(/'/g,"'");
txHTML=txHTML.replace(/</g,"<");
txHTML=txHTML.replace(/>/g,">");
txHTML=txHTML.replace(/&/g,"&");
txHTML=txHTML.replace(new RegExp(stab, "g"),"<b>");
txHTML=txHTML.replace(new RegExp(stai, "g"),"<i>");
txHTML=txHTML.replace(new RegExp(stau, "g"),"<u>");
txHTML=txHTML.replace(new RegExp(endb, "g"),"</b>"};
txHTML=txHTML.replace(new RegExp(endi, "g"),"</i>"};
txHTML=txHTML.replace(new RegExp(endu, "g"),"</u>"};
Hur skriver man om ovanstående på ett bättre (och fungerande) sätt?
(Det är de 6 sista raderna som inte fungerar, och de 3 sista ger rentav felmeddelande. Jag vill ju alltså byta ut [ b ] mot < b >, och [ / b] mot < /b > (ignorera de extra blankstegen jag lade in här) osv.
Peter SMedlem sedan dec. 20025 483 inlägg Tänk på att [ och ] har särskild betydelse i reguljära uttryck. Dessa måste escape:as.
Tack. Jag försökte med det också nu, men lyckas inte. Du får jättegärna presentera varsitt kodrad-exempel på hur jag konkret skriver för att byta ut
[ b ] mot < b >
respektive
[ / b] mot < /b >
(ignorera de extra blankstegen jag lade in här).
Peter SMedlem sedan dec. 20025 483 inlägg txt = "text...[b]fet text[/b]!";
uno = "\\[b\\]";
dos = "\\[/b\\]";
txt = txt.replace(new RegExp(uno, "g"), "<b>");
txt = txt.replace(new RegExp(dos, "g"), "</b>");
alert(txt);
Edit:/ txt ändrad
Nu tror jag att jag fick till det. Jag skippade att försöka gå via strängar, och skrev (tack vare dig) istället nån harang med backslash före specialtecknen. Verkar fungera. Tack!
(Tillägg: gjorde precis som du föreslog nu i svaret du nyss hann skriva. Så tack igen. ;))
Peter SMedlem sedan dec. 20025 483 inlägg :bire
Glöm ej att markera det svar som löste problemet som slutgiltigt.
Peter SMedlem sedan dec. 20025 483 inlägg Hm, det korrekta är att markera det inlägg som löste problemet. :)