webForumDet fria alternativet

replace i javascript

8 svar · 527 visningar · startad av bananskalet

bananskaletMedlem sedan feb. 200722 inlägg
#1

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
#2
str.replace(new RegExp(strNamn, "g"), "Bertil")

Escape:a '/' till '\/'.

bananskaletMedlem sedan feb. 200722 inlägg
#3

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,"&lt;");
	txHTML=txHTML.replace(/>/g,"&gt;");
	txHTML=txHTML.replace(/&/g,"&amp;");
	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
#4

Tänk på att [ och ] har särskild betydelse i reguljära uttryck. Dessa måste escape:as.

bananskaletMedlem sedan feb. 200722 inlägg
#5

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
#6
txt = "text...&#91;b]fet text&#91;/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

bananskaletMedlem sedan feb. 200722 inlägg
#7

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
#8

:bire

Glöm ej att markera det svar som löste problemet som slutgiltigt.

Peter SMedlem sedan dec. 20025 483 inlägg
#9

Hm, det korrekta är att markera det inlägg som löste problemet. :)

138 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)