Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Replace particolare

  1. #1

    Replace particolare

    Ho una lista di nomi dalla quale voglio ottenere le presenze, ad esempio:

    Squadra A:
    Benito, Collacchioni, Battistelli, Di Napoli (dal 46’st Tufano), Vignati, Di Sole, Valiani, Carfora, Artistico, Melis (dal 40’pt Boccacini), Frau.

    Il problema riguarda l'ultimo giocatore in quanto c'è il punto, e i giocatori all'interno della parentesi.

    Io faccio così per inserire nel db le presenze dei giocatori nel caso siano nell'elenco:
    codice:
    TabellinoA = (Replace(StrTabellinoA, " ", ","))
    TabellinoB = (Replace(StrTabellinoB, " ", ","))
    SPresenze = SPLIT(TabellinoA & " " & TabellinoB, ",") 
    for each Presenze in SPresenze
    ' Aggiungo la presenza al giocatore
    strSQL= "UPDATE tb_carriera SET str_presenze=str_presenze+1 WHERE tb_carriera.str_giocatore in ((SELECT id_giocatore FROM tb_giocatori WHERE str_anno="&Request.QueryString("stagione")&" AND str_cognomegioc='"&Presenze&"'))"
    objConn.Execute(strSQL)
    next
    Come faccio con il punto e la parentesi?
    c'è qualche soluzione?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    Ciao waitec401,

    quello che hai fatto fino adesso non è molto corretto... se sostituisci gli spazi con la virgola e poi splitti sulla virgola nell'array andranno tanti elementi vuoti... e cognomi come Di Napoli si spezzano in Di e Napoli
    io farei così
    codice:
    <%
    StrTabellinoA = "Benito, Collacchioni, Battistelli, Di Napoli (dal 46’st Tufano), Vignati, Di Sole, Valiani, Carfora, Artistico, Melis (dal 40’pt Boccacini), Frau."
    StrTabellinoB = "Pippo, Pluto (dal 46’st Tufano), con spazio (dal 40’pt Boccacini), Frau."
    TabellinoA = Replace(StrTabellinoA, ".", ",")
    TabellinoB = (Replace(StrTabellinoB, ".", ""))
    SPresenze = SPLIT(TabellinoA & " " & TabellinoB, ",") 
    set re = new RegExp
    re.Pattern="\(.*?\)"
    re.Global=true
    for each Presenze in SPresenze
      nome = trim(re.Replace(Presenze,""))
      ' Aggiungo la presenza al giocatore
      strSQL= "UPDATE tb_carriera SET str_presenze=str_presenze+1 WHERE tb_carriera.str_giocatore in ((SELECT id_giocatore FROM tb_giocatori WHERE str_anno="&Request.QueryString("stagione")&" AND str_cognomegioc='"&nome&"'))"
      Response.Write strSQL & "
    
    " & vbCrLf
      objConn.Execute(strSQL)
    next
    %>
    gli spazi li lascio dove sono, sostituisco il punto della prima stringa con un punto e lo tolgo nella seconda stringa. Splitto sulla virgola e per ogni elemento dell'array faccio il replace di quello che sta tra parentesi con una regular expression e tolgo gli spazzi iniziali e finali con il trim.

  3. #3
    Ok grazie,
    Funziona per quanto riguarda il nome Di "Napoli" ma non prende i nomi nelle parentesi.
    codice:
    UPDATE tb_carriera SET str_presenze=str_presenze+1 WHERE tb_carriera.str_giocatore in ((SELECT id_giocatore FROM tb_giocatori WHERE str_anno=2 AND str_cognomegioc=''))
    Quando faccio il response della SQL ottento 11 righe come sopra ma con il nome del giocatore e l'ultima è quella indicata.

    Ciao

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    ah scusa... avevo capito di non considerare quello che stava tra parentesi... cambiano un po' di cose...
    la regular expression va modificata
    codice:
    <%
    StrTabellinoA = "Benito, Collacchioni, Battistelli, Di Napoli (dal 46’st Tufano), Vignati, Di Sole, Valiani, Carfora, Artistico, Melis (dal 40’pt Boccacini), Frau."
    StrTabellinoB = "Pippo, Pluto (dal 46’st Tufano), con spazio (dal 40’pt Boccacini), Frau."
    TabellinoA = Replace(StrTabellinoA, ".", ",")
    TabellinoB = (Replace(StrTabellinoB, ".", ""))
    tabAB = TabellinoA & " " & TabellinoB
    set re = new RegExp
    re.Pattern="\(dal \d{1,2}’[ps]t ([^\)]+)\)"
    re.Global=true
    re.IgnoreCase=true
    set ris=re.Execute(tabAB)
    for each rr in ris
    	tabAB = tabAB & "," & rr 
    next
    tabAB = re.Replace(tabAB,"")
    SPresenze = SPLIT(tabAB, ",") 
    for each Presenze in SPresenze
      nome = trim(Presenze)
      ' Aggiungo la presenza al giocatore
      strSQL= "UPDATE tb_carriera SET str_presenze=str_presenze+1 WHERE tb_carriera.str_giocatore in ((SELECT id_giocatore FROM tb_giocatori WHERE str_anno="&Request.QueryString("stagione")&" AND str_cognomegioc='"&nome&"'))"
      Response.Write strSQL & "
    
    " & vbCrLf
      objConn.Execute(strSQL)
    next
    %>

  5. #5
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    hem... l'ho provato e non funzia
    mi ero scordato qualcosina
    ecco qua
    codice:
    <%
    StrTabellinoA = "Benito, Collacchioni, Battistelli, Di Napoli (dal 46’st Tufano), Vignati, Di Sole, Valiani, Carfora, Artistico, Melis (dal 40’pt Boccacini), Frau."
    StrTabellinoB = "Pippo, Pluto (dal 46’st Tufano), con spazio (dal 40’pt Boccacini), Frau."
    TabellinoA = Replace(StrTabellinoA, ".", ",")
    TabellinoB = (Replace(StrTabellinoB, ".", ""))
    tabAB = TabellinoA & " " & TabellinoB
    set re = new RegExp
    re.Pattern="\(dal \d{1,2}’[ps]t ([^\)]+)\)"
    re.Global=true
    re.IgnoreCase=true
    set ris=re.Execute(tabAB)
    re.Pattern="\(dal \d{1,2}’[ps]t "
    for each rr in ris
    	nome = re.Replace(rr,"")
    	tabAB = tabAB & "," & Left(nome,Len(nome)-1)
    next
    tabAB = re.Replace(tabAB,"")
    SPresenze = SPLIT(tabAB, ",") 
    for each Presenze in SPresenze
      nome = trim(Presenze)
      ' Aggiungo la presenza al giocatore
      strSQL= "UPDATE tb_carriera SET str_presenze=str_presenze+1 WHERE tb_carriera.str_giocatore in ((SELECT id_giocatore FROM tb_giocatori WHERE str_anno="&Request.QueryString("stagione")&" AND str_cognomegioc='"&nome&"'))"
      'Response.Write strSQL & "
    
    " & vbCrLf
      objConn.Execute(strSQL)
    next
    %>
    questo dovrebbe andare... famme sape'

  6. #6
    Non da errore,
    ma non inserisce la presenza nei giocatori che sono stati sostituti cioè quelli prima della parentesi.

  7. #7
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    chiedo venia ho sbagliato ancora
    cerca di capire... è venedì... sono le 20.00 passate e sono ancora in ufficio
    facevo il replace dopo aver cambiato il pattern
    adesso dovrebbe essere ok
    codice:
    <%
    StrTabellinoA = "Benito, Collacchioni, Battistelli, Di Napoli (dal 46’st Tufano), Vignati, Di Sole, Valiani, Carfora, Artistico, Melis (dal 40’pt Boccacini), Frau."
    StrTabellinoB = "Pippo, Pluto (dal 46’st Tufano), con spazio (dal 40’pt Boccacini), Frau."
    TabellinoA = Replace(StrTabellinoA, ".", ",")
    TabellinoB = (Replace(StrTabellinoB, ".", ""))
    tabAB = TabellinoA & " " & TabellinoB
    set re = new RegExp
    re.Pattern="\(dal \d{1,2}’[ps]t ([^\)]+)\)"
    re.Global=true
    re.IgnoreCase=true
    set ris=re.Execute(tabAB)
    tabAB = re.Replace(tabAB,"")
    re.Pattern="\(dal \d{1,2}’[ps]t "
    for each rr in ris
    	nome = re.Replace(rr,"")
    	tabAB = tabAB & "," & Left(nome,Len(nome)-1)
    next
    SPresenze = SPLIT(tabAB, ",") 
    for each Presenze in SPresenze
      nome = trim(Presenze)
      ' Aggiungo la presenza al giocatore
      strSQL= "UPDATE tb_carriera SET str_presenze=str_presenze+1 WHERE tb_carriera.str_giocatore in ((SELECT id_giocatore FROM tb_giocatori WHERE str_anno="&Request.QueryString("stagione")&" AND str_cognomegioc='"&nome&"'))"
      'objConn.Execute(strSQL)
    next
    %>
    famme sape'

  8. #8
    Così non da errore ma non inserisce nessuna presenza

  9. #9
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    hai tolto il commento nell'execute??
    codice:
    'objConn.Execute(strSQL)
    io l'ho messo perché non ho il db

  10. #10
    emh....

    No!!

    non l'ho proprio visto...
    ora sembra funzionare perfettamente tranne che per un giocatore, ma evidentemente ho scritto sbagliato il nome nek db.

    Grazie

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