la funzione di prima non era del tutto esatta
esatta o no, a me ora sembra funzionare lo stesso. Ho fatto qualche modifica e prendendo strade alternative ho raggiunto la meta lo stesso. Soltanto il terzo codice mi dava problemi (forse quando incontrava il salto di riga?), ma poco male, ho visto che non era indispensabile
CODICE REPLACE
codice:
<html>
<head>
<title>REPLACE</title>
<script language="Javascript">
<!--
if (!Array.prototype.indexOf) //// codice per compatibilita browser
{
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1; };} ////// fine codice compatibilita
function sost() { //////richiama cocice sostituisci
var t = tex.value;
while(t.indexOf("+")!=-1) ////ciclo while per sostituzione carattere '+' in '£'
{ t=t.replace("+", "£") }
///tra le virgolette l'elenco delle variabili da sostituire
t = sostituisci (t,['1','2','4£4=8'],['un','due','quattro+quattro=otto']);
while(t.indexOf("£")!=-1) ////ciclo while per riportare '£' a '+'
{t=t.replace("£", "+") }
///cicli while per sostituire parole che non rientrano nella funzione sosituisci
while(t.indexOf("cane")!=-1)
{t=t.replace("cane", "cavallo")}
while(t.indexOf("gatti")!=-1)
{t=t.replace("gatti", "uccelli")}
while(t.indexOf("ferro")!=-1)
{t=t.replace("ferro", "formaggio")}
/// fine cicli while
tex.value = t /// riporta valore della textarea
}
function sostituisci(str, find, replace) { /////codice sostituisci
var r = new RegExp(find.join("|"), "g"),
f = function(m) {
return replace[ find.indexOf(m) ];
}
return str.replace(r,f)
} //// fine codice sostituisci
function cerca() //// funzione cerca per sostituire altre parole
{
var tp=tex.value;
parolaold=prompt("Quale parola vuoi sostituire?");
if (parolaold!=null)
{
if (tp.indexOf(parolaold)==-1) alert("La parola "+parolaold+" non è presente nella textarea.");
else
{
parolanew=prompt("Cosa metti al posto di "+parolaold+"?");
if (parolanew!=null)
{
while(tp.indexOf(parolaold)!=-1)
{tp=tp.replace(parolaold,parolanew)
}
tex.value=tp;
} } } } /// fine funzione cerca
function newt(){ ///funzione cancella textarea
tex.value=""}
-->
</script>
</head>
<body>
<textarea name="tex" cols="40" rows="20" >1 cane mangia il fieno, 2 gatti volano, 1 topo mangia il ferro, 4+4=8</textarea>
</p>
<input type="submit" value="CAMBIA" onClick=sost() >
<input type="submit" value="SCEGLI" onClick=cerca() >
<input type="submit" value="NEW" onClick=newt()>
</p>
</body>
</html>