Visualizzazione risultati 1 fino 16 di 16

Discussione: identificare due valori con regexp e replace

  1. #1
    Guest

    Predefinito identificare due valori con regexp e replace

    Ciao a tutti, avrei bisogno del vostro aiuto.
    Ho una stringa di questo tipo:
    "<input type="button" value="" idtag="" style="color:rgb(51, 156, 203); background-color:white; border:0px; padding:0px;">"

    avrei bisogno di utilizzare il metodo replace e le espressioni regolari per sostituirla con i valori presi dal campo value e idtag, nella forma value - idtag.

    Ho capito che posso scrivere il replace in questo modo:

    Codice:
    contenuto = contenuto.replace(/(<input type="button" value="" idtag="" style="color:rgb(51, 156, 203); background-color:white; border:0px; padding:0px;"> )/gi, function($0,$1,$2){return "";});
    Ma non ho capito come svilupparlo, mi aiutate?

  2. #2
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Nel senso che devi inserire del valori nell'attributo value e in idtag?

    Dovresti fare una cosa del genere:

    Codice:
    contenuto = contenuto.replace(/value=""/, 'value="'+valore+'"');


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  3. #3
    Guest

    Predefinito

    Scusami mi sono espresso male, praticamente devo ricavare il valore di value e di idtag tramite un regexp. Poi tramite il replace sostituire questo valore con la stringa.

    Il problema è che non riesco a scrivere correttamente la regexp

  4. #4
    Guest

    Predefinito

    Praticamente vorrei riuscire a fare questo:

    Stringa = "<input type="button" value="pippo" idtag="12" style="color:rgb(51, 156, 203); background-color:white; border:0px; padding:0px;">";

    Regexp e replace

    Stringa = "pippo - 12";

  5. #5
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    In questo caso più che una replace puoi fare dei match e poi ti prendi i risultati.

    Codice:
    value = (stringa.match(/value="(.*?)"/))[1];
    idtag = (stringa.match(/idtag="(.*?)"/))[1];


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da saitfainder Visualizza messaggio
    In questo caso più che una replace puoi fare dei match e poi ti prendi i risultati.

    Codice:
    value = (stringa.match(/value="(.*?)"/))[1];
    idtag = (stringa.match(/idtag="(.*?)"/))[1];
    Ma io poi ho bisogno di sostituire i risultati con il codice dell'input in una stringa più ampia, in ogni caso credo mi serva fare la regexp. No?

  7. #7
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Non so cosa vuoi fare e se di volta in volta ci racconti un pezzo in più staremo qui ancora per molto tempo...


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da us90 Visualizza messaggio
    Ciao a tutti, avrei bisogno del vostro aiuto.
    Ho una stringa di questo tipo:
    "<input type="button" value="" idtag="" style="color:rgb(51, 156, 203); background-color:white; border:0px; padding:0px;">"

    avrei bisogno di utilizzare il metodo replace e le espressioni regolari per sostituirla con i valori presi dal campo value e idtag, nella forma value - idtag.

    Ho capito che posso scrivere il replace in questo modo:

    Codice:
    contenuto = contenuto.replace(/(<input type="button" value="" idtag="" style="color:rgb(51, 156, 203); background-color:white; border:0px; padding:0px;"> )/gi, function($0,$1,$2){return "";});
    Ma non ho capito come svilupparlo, mi aiutate?

    Quello che vorrei fare l'ho scritto in questo post... provo ad essere più chiaro.

    Ho una variabile Contenuto che contiene del codice HTML, tra questo testo c'è il codice di un input type button, con le caratteristiche sopra identificate. Vorrei con le regexp acquisire i valori di Value e di idtag, in seguito utilizzare il replace per sostituire questi valori al codice del pulsante.... Il codice del pulsante è come ho letto si deve fare, ma purtroppo non funziona, credo di aver sbagliato a scrivere la regexp. Potete aiutarmi a riscriverla?

    Il modo sono sicuro sia questo, ho già visto fare cose simili, ma non riesco ad adattarlo al mio caso

  9. #9
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Al post numero 4 hai detto tutt'altro, volevi estrarre i valori dalla stringa. Sarebbe meglio che mostrassi la stringa di partenza e a cosa vuoi arrivare perché ancora non mi è mica chiaro perché dici di estrarre e sostituire, ma il risultato sarebbe un nulla di fatto.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  10. #10
    Guest

    Predefinito

    Citazione Originalmente inviato da saitfainder Visualizza messaggio
    Al post numero 4 hai detto tutt'altro, volevi estrarre i valori dalla stringa. Sarebbe meglio che mostrassi la stringa di partenza e a cosa vuoi arrivare perché ancora non mi è mica chiaro perché dici di estrarre e sostituire, ma il risultato sarebbe un nulla di fatto.
    La stringa di partenza deve essere qualcosa di questo tipo:

    Codice:
    stringa = 'testo html a caso-<input type="button" value="" idtag="" style="color:rgb(51, 156, 203); background-color:white; border:0px; padding:0px;"/>-altro testo html a caso';
    Con il contenuto di value e idtag che varia a piacere.

    Il risultato deve essere una stringa così composta:
    strigna = 'testo html a caso-'+valore_di_value+valore_di_idtag+'-altro testo html a caso';

  11. #11
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Come detto al post #4, quindi cosa non va bene nella soluzione proposta al post #5? È un modo più robusto per estrarre i valori e una volta che hai le variabili le combini come vuoi per creare un'altra stringa.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  12. #12
    Guest

    Predefinito

    Se non sbaglio il codice che mi hai dato tu, mi restituisce tutti i value e tutti gli idtag di tutti gli elmenti nella pagina, io invece li voglio solo del tag che ho indicato

  13. #13
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da us90 Visualizza messaggio
    Se non sbaglio il codice che mi hai dato tu, mi restituisce tutti i value e tutti gli idtag di tutti gli elmenti nella pagina, io invece li voglio solo del tag che ho indicato
    Beh, nel primo post hai detto che hai quella stringa lì, non la pagina. Se non dici le cose per forza che andiamo avanti a tentativi. Quindi nel contenuto della pagina devi sostituire tutto il tag con la nuova stringa? Finalmente la questione assume un senso.

    In questo caso si può usare una cosa simile a quella che hai postato all'inizio:

    Codice:
    contenuto = contenuto.replace(/<input type="button" value="(.*?)" idtag="(.*?)" style="color:rgb\(51, 156, 203\); background-color:white; border:0px; padding:0px;">/gi, "$1 - $2");
    Non c'è bisogno di usare una funzione di callback perché stai semplicemente usando i testi trovati. Occhio che le parentesi tonde sono un carattere speciale e vanno opportunamente escapate.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  14. #14
    Guest

    Predefinito

    Grazie mille era proprio quello che volevo!

  15. #15
    Guest

    Predefinito

    Come non detto, c'è un problemino (magari è colpa mia). Seguendo il tuo esempio ho creato due espressioni, una per gli hashtag e una per le citazioni:

    Codice:
    contenuto = //prelevo
    
    contenuto = contenuto.replace(/<input type="button" value="(.*?)" idtag="(.*?)" style="color: rgb\(51, 156, 203\); background-color: white; border: 0px; padding: 0px;">/gi, "<a href='tag.php?id=$2'>$1</a>");
    
    contenuto = contenuto.replace(/<input type="button" value="(.*?)" iduser="(.*?)" style="color: rgb\(51, 156, 203\); background-color: white; border: 0px; padding: 0px;">/gi, "<a href='user.php?id=$2'>$1</a>");
    
    alert(contenuto):
    Se inserisco:
    Codice:
    <input type="button" value="@Utente" iduser="3" style="color: rgb(51, 156, 203); background-color: white; border: 0px; padding: 0px;">&nbsp;<input type="button" value="#Tag" idtag="1" style="color: rgb(51, 156, 203); background-color: white; border: 0px; padding: 0px;">
    Ottengo:
    Codice:
    <a href=tag.php?id=1'>@Utente" iduser="3" style="color: rgb(51, 156, 203); background-color: white; border: 0px; padding: 0px;">
    Perché le due cose si mischiano in questo modo?

  16. #16
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Dato che i tag che adesso hai riportato sono così simili il match avviene in maniera un po' imprevista. Basta correggere i pattern racchiusi tra parentesi.

    Codice:
    /<input type="button" value="([^"]*?)" idtag="([^"]*?)" style="color: rgb\(51, 156, 203\); background-color: white; border: 0px; padding: 0px;">/


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •