Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema con Replace globale ( /g )

    Salve!
    Il seguente codice funziona....



    <script type="text/javascript">
    function texttosmiles(messaggio){
    messaggio = messaggio.replace(":)","[img]img/smiles/commenti_curioso.gif[/img] ");
    return messaggio;
    }
    </script>


    ....però modifica solo la prima occorrenza della faccina!
    Se modifica la parte del replace della funzione con il codice per il replace globale:

    messaggio = messaggio.replace(/":)"/g,"[img]img/smiles/commenti_curioso.gif[/img] ");

    ...ottengo il seguente errore: "unmatched ) in regular expression"

    Stessa cosa se provo a modificare in questo modo:

    messaggio = messaggio.replace(/\:)/g,"[img]img/smiles/commenti_curioso.gif[/img] ");

    Potreste gentilmente suggerirmi una maniera per creare un espressione regolare che funzioni per il replace globale della faccina? Grazie mille!
    Webmaster di APOCALYPSE NOW!!! ( http://www.apocanow.it ).

    Uno dei più grandi siti di videogaming in Italia, 4000 visitatori unici giornalieri, una bellissima comunità di videogiocatori e tanti trucchi e soluzioni ti attendono!

  2. #2
    nn mi ricordo come funziona il flag globale cmq potresti far partire la funzione in modo ricorsivo cosi'

    function texttosmiles(messaggio){
    if (messaggio.search("") != -1) {
    messaggio = messaggio.replace("","[img]img/smiles/commenti_curioso.gif[/img] ");
    texttosmiles(messaggio);
    }
    else
    return messaggio;
    }


    questo modo e' identico al flag g come risultato...
    W magica ROMA!

  3. #3
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    devi fare l'escape della parentesi tonda, altrimenti l'interprete pensa che tu abbia chiuso una parentesi senza aprirla. Inoltre gli apici doppi non ci vanno

    ...replace(/:\)/g, ....
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  4. #4
    Risalve :)
    Grazie! Ho risolto QUASI tutti i problemi. Vi posto 3 stringe per i quali ho problemi. Sicuramente è un altro problema di apici o backslash...il problema è che sono negato, e, con i tanti tentativi che ho fatto, non ne sono venuto a capo.


    messaggio = messaggio.replace(/[ b ]/g,"[b]");
    messaggio = messaggio.replace(/[ /b ]/g,"[b]");
    messaggio = messaggio.replace(/?/g,"");

    Le prime 2 stringhe funzionano, ma mi esce un output indesiderato.
    Nella prima stringa: [] invece di
    Nella seconda stringa: [/] invece di

    La terza stringa mi dà un errore javascript: "Invalid Quantifier: ? "

    Grazie per l'aiuto :)
    P.S. = Le b hanno le parentesi quadre attaccate. Le ho staccate sennò si attiva il codice di grassetto di questo forum :)
    Webmaster di APOCALYPSE NOW!!! ( http://www.apocanow.it ).

    Uno dei più grandi siti di videogaming in Italia, 4000 visitatori unici giornalieri, una bellissima comunità di videogiocatori e tanti trucchi e soluzioni ti attendono!

  5. #5
    Una cosa alla volta ...
    Per il grassetto:

    var messaggio="&#x5b;b&#x5d;ciao&#x5b;/b&#x5d; a te &#x5b;b&#x5d;Apocalypse&#x5b;/b&#x5d;";
    messaggio = messaggio.replace(/\[b\]/g,"").replace(/\[\/b\]/g,"");
    alert(messaggio);

    occorre fare l'escape delle parentesi quadre nei pattern di ricerca, perch&egrave; altrimenti sono interpretate come 'sets'.

    Adesso per&ograve; spieghi cosa vuoi ottenere con:

    messaggio = messaggio.replace(/?/g,"");

    Se vuoi che qualsiasi punto interrogativo eventualmente presente nel messaggio sia cancellato, allora basta fare l'escape del punto interrogativo, cos&igrave;:

    messaggio = messaggio.replace(/\?/g,"");

    altrimenti spiegati meglio.

    P.S: ci ho messo una vita a scrivere, perch&egrave; ho dovuto usare un 'escamotage' per far apparire i tags tipo &#x5b;b&#x5d;
    Come ho fatto?
    Lo so, non &egrave; intuitivo, ma ... basta usare le entities, cos&igrave;:
    &amp;#x5b;b&amp;#x5d;
    .. e non si possono usare tra &#x5b;code&#x5d; e &#x5b;/code&#x5d;
    o tra &#x5b;php&#x5d; e &#x5b;/php&#x5d; .. non vengono interpretate!
    ma ci&ograve; esula dal tuo problema...

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

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.