webForumDet fria alternativet

Replace allt mellan [ ]

5 svar · 280 visningar · startad av peterg

petergMedlem sedan aug. 200023 inlägg
#1

Jag har ett textfält där man kan markera viss text och sedan välja vilken typ av html-kod man vill använda.
Denna funktion vill jag nu utveckla lite mera med en funktion som fungerar på ungefär samma sätt där man markerar vald text och sedan klicka på en ex. delfont-knapp. Då ska all html-kod från den markerade texten tas bort.

Denna kod använder jag idag och tar bort taggen

<SCRIPT LANGUAGE="JAVASCRIPT">
function delFontTag(txtArea){
txtAreaName = txtArea.name;
txtRange = document.all[txtAreaName].createTextRange();
txtContainer = txtRange.parentElement().name;

var check = document.frm.fontface;
var fontFaceVal = "no font";
for (var i=0; i<check.length; i++){
if(check[i].checked){ fontFaceVal=check[i].value;}
}

objRange = document.selection.createRange();
hiliteTxt = objRange.text;
var newstr = hiliteTxt;
delFont_Txt = newstr.replace("[/FONT]","");

if(hiliteTxt != ""){
objRange.text = delFont_Txt;
}
}
</SCRIPT>

Problemet är att denna kod bara tar bort .

Min fråga nu är hur man tar bort allt mellan klamrarna[ ], eftersom all kod jag använder står innanför klamrar [ ]?

[Redigerat av peterg den 02 jan 2002]

petergMedlem sedan aug. 200023 inlägg
#2

Ingen som vet?

petergMedlem sedan aug. 200023 inlägg
#3

Är jag för krånglig i min fråga?

PeWMedlem sedan juni 200010 432 inlägg
#4

Du får väl loopa igenom och där det hittas en [ så ersätts allt efter detta med "" ända tills det förekommer ett ]...

Pseudo hopkok förutsatt att du petat in det du ska testa i en sträng som här döpts till 'texten':

function tEsTa(texten){
flag = false;
for(i=0;i<texten.length;i++){
if(texten.chatAt(i)=='[')
  flag = true;
if(texten.charAt(i)==']')
  flag = false;
if(flag)
  texten.charAt(i)="";
   }
return texten;
}

Och som sagt bara en principip... ;)

------------------
Ancilla, face mea laganum!

[Redigerat av PeW den 06 jan 2002]

petergMedlem sedan aug. 200023 inlägg
#5

Funktionen som jag använder idag funkar perfekt, dvs jag kan markera en text och sedan klicka på en knapp så tas alla -taggar bort från den markerade texten (eftersom jag bara tillfälligt sagt att ska tas bort)
Det jag undrar över är hur man med hjälp av replace tar bort allt mellan [ ].

 
delFont_Txt = newstr.replace("[här ska alla tecken mellan klamrarna tas bort]","");

Finns det nån sån lösning?
Eller måste jag köra en replace för alla taggar jag använder?

Några taggar jag använder:

[FONTCOLOR=#00000]
m.m...

PeWMedlem sedan juni 200010 432 inlägg
#6

Erkänner villigt att jag inte riktigt fattar din frågeställning :l

Men!
Om du nu ska envisas med replace() får du nog lägga ett replace() för varje variant av tagg. Metoden är ju "statisk" så till vida att den inte har nåt eget AI ;)

Det som egentligen händer när man använder replace() är ju att man kallar på en metod (funktion) till objektet String som då utför en jämförelse med angivna teckensträngar och sen byter ut genom loopning. Således blir det segt, trögt och hopplöst onödigt att anropa en hop med olika replace() som ju varje gång internt ändå gör något liknande den loopen jag skrev (fast *2). Min variant blir ju mer universiell och mindre "tung" ...

För att anropa den kan man ju ha sållat innan, genom nån villkors operation och på så vis välja vilka taggar som ska bort, om man nu vill det.

------------------
Ancilla, face mea laganum!

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