Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22
  1. #11
    Originariamente inviato da remo54
    oggi è il 23 novembre, si festeggia san Mega69, protettore dei programmatori imbranati...
    tutto sistemato. si trattava di un problema di incompatibilità col im mio IE 5.0. l'ho fatto girare su un altro PC e funziona a meraviglia. Il problema era solo che il primo file l'incompatibilità con i vecchi browser non la risolveva. :master:
    Mi resta solo un problema. quando le lettere da sostituire sono caratteri come '/' o '[', non le riconosce! cosa posso fare?

    PS grazie anakin. proverò anche i tuoi codici, magari quelli vanno pure sul mio pc
    Addirittura protettore ( degli imbranati invece mi si addice )

    Per far funzionare lo script con quei caratteri devi anteporre un backslash:
    "\[" o "\/"
    Questo perchè alcuni caratteri hanno un significato speciale nelle regexp, il backslash serve proprio a evitare che vengano interpretati come tali

    EDIT: Credo che lo script non funzioni con IE5 perchè non supporta una funzione come secondo argomento di replace; non ne sono sicuro ma immagino sia questa la causa.

  2. #12
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    16
    Per far funzionare lo script con quei caratteri devi anteporre un backslash:
    con lo slash avevo già provato (ogni tanto qualcosa me la ricordo :rollo: )ma non ha funzionato.
    Di preciso non riconosceva il segno + e lo slash / . altri suggerimenti? :master:

  3. #13
    Non slash /
    backslash \

    Io l'ho provato e funziona.

  4. #14
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    16
    se
    codice:
    old = "tre+tre/due"
    questo codice funziona
    codice:
    txt=txt.replace(old, new);
    questo invece no:
    codice:
    var r = new RegExp(old, "g"),
    ho provato già il backslash, ma forse sbaglio a posizionarlo. mi dici come va scritta esattamente la variabile!?

  5. #15
    old = "tre\+tre\/due"
    Prima di ogni carattere speciale.

  6. #16
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    16
    elementare! VVoVe: devo averla già provata ma per sicurezza vodo a ricontrollare ...

  7. #17
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    16
    nuova diagnosi: lo slash lo riconosce anche senza back-slash davanti, ma se in una sola delle variabili è presente un segno + non riconosce più neppure le variabili con lo slash!
    ho provato anche questa
    codice:
    t = sostituisci(t,['uno\+uno']',['unopiuuno']);
    ma mi da quantificatore imprevisto sulla riga
    codice:
    var r = new RegExp(find.join("|"), "g"),
    a questo punto la domanda è solo una: :master:
    come riconoscere un segno + in una textarea e sostituirlo con la frase "macomeca***devofarepervederlo"

  8. #18
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    16
    come riconoscere un segno + in una textarea e sostituirlo
    mi correggo. il replace' singolo' il segno + lo riconosce e lo sostituisce senza problemi, è con il codice
    new RegExp("variabile con il segno +", "g"),
    che manda tutto in tilt

  9. #19
    Tutto risolto, in effetti ho fatto un errore grossolano
    Prima di tutto devi mettere non un backslash, ma bensì due \\ prima del più.
    Secondo, la funzione di prima non era del tutto esatta:
    codice:
    function sostituisci(str, find, replace) {
       var r = new RegExp(find.join("|"), "g"),
            f = function(m) {
              return replace[ find.indexOf(m) ];
            }
    	for(var i = 0, l = find.length; i!=l; i++) {
    		find[i] = find[i].replace(/\\/g, "");
    	}
       return str.replace(r,f)
    }

  10. #20
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    16
    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>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.