Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Replace Array

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    514

    Replace Array

    Ciao ...mi servirebbe una funzione per le emoticons come in asp, però per un'anteprima lato client!

    La funzione l'hò fatta il problema è passare l'array come stringa!

    var emoticons = Array();

    l'array contiene questi dati per le emoticons:
    [1] [2] [3] etc....
    se faccio cosi funziona:
    testo=testo.replace(emoticons[0],img)
    però scambia solo la prima immagine.

    Il problema per me è passargli l'array con / Array() /g
    Ho guardato nei vari post precedenti, ma riguardavano solamente stringhe normali senza variabili o array, invece in un post si provava cosi:
    testo=testo.replace(eval("/"+emoticons[0]+"/g"),img)
    però deve effettuare un loop da 50 giri e si blocca il browser!

    Si può con una RE ?
    Ho notato in alcune RE delle parentesi quadre [] non saranno mica quelle a crearmi dei problemi ?

    Grazie!

  2. #2
    Reale_Augello
    Guest

    Scusa...

    ... ma il tuo array che dati contiene ?
    Roba tipo ':)', ':D', e così via ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    514
    Contiene questo per identificare le emo!
    [1] [2] [3] [4] etc....

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    633
    50 giri non sono molti, percui se il browser si blocca è per qualcos'altro...
    Dovresti dare più info...ad esempio cos'è img? come fai a combinare le diverse emo con le diverse img...
    fai un esempio o metti il tuo codice....

    cmq un esempio che ho scritto è questo:
    codice:
    emoticons = new Array(":)",";)",":D");
    imgEmoticons = new Array("[img]img1.gif[/img]","[img]img2.gif[/img]","[img]img3.gif[/img]")
    
    
    emoticons.toString = function(){
    			var myRE = "",L=this.length;
    			for(var i=0; i<L; i++)
    				myRE+=this[i].replace(/\)/gi,"\\)")+(i==L-1?"":"|");
    			return myRE;
    			}
    
    
    emoticons.match = function(mtch){
    			for(var i=0; i<emoticons.length; i++) 
    				if(emoticons[i].replace(/\\/gi,"")==mtch) return imgEmoticons[i];
    			return "";
    		}
    
    
    // ESEMPIO:
    testo = "hola! :) ciauz ;) una risata: :D:D:D";
    alert(testo);
    alert(testo.replace(new RegExp(emoticons,"gi"),emoticons.match));
    Non so se è quello che cerchi, ma con questo tipo di codice,
    puoi gestire i tuoi array liberamente senza modificare poi le chiamate.
    Il problema è quello di scrivere bene le versioni di toString/match,
    cercando di individuare caratteri significativi per le RegExp (come ")"), ma una volta fatto questo, l'interfaccia rimane molto semplice da usare e da modificare.
    ciauz.

    PS: il forum ovviamente mi cambia le stringhe con le emo, ma le faccine sono: ": )", "; )", ": D"
    Alcuni miei articoli in PRO.HTML.IT: JavaScript | DHTML | DOM
    Sviluppo : wedev | forum

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 © 2024 vBulletin Solutions, Inc. All rights reserved.