Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Ciclo e replace

  1. #1

    Ciclo e replace

    Ho un problema con un replace all'interno di un ciclo. Il codice è:

    codice:
    for k=0 to ubound(delfoto)
       fotonew = replace(fotonew, delfoto(k)&";", "")
    next
    In altre parole voglio cancellare dalla mia stringa "fotonew" tutte le stringhe che fanno parte dell'array delfoto.

    Solo non riesco a capire perchè cancelli solo al primo giro e non agli altri nonostante vi sia la corrispondenza. Per capirci meglio vi mostro i giri stampati per tre cancellature:

    codice:
    situazione iniziale: rif. 107.jpg;no apr.jpg;rif. 038.jpg;rif. 008.jpg;_0012.jpg;rif. 091.jpg;
    
    giro 1: rif. 107.jpg;no apr.jpg;rif. 038.jpg;rif. 008.jpg;_0012.jpg;rif. 091.jpg; 
    parte da cancellare: rif. 107.jpg;
    
    giro 2: no apr.jpg;rif. 038.jpg;rif. 008.jpg;_0012.jpg;rif. 091.jpg; 
    parte da cancellare: rif. 008.jpg;
    
    giro 3: no apr.jpg;rif. 038.jpg;rif. 008.jpg;_0012.jpg;rif. 091.jpg; 
    parte da cancellare: rif. 091.jpg;
    
    situazione finale: no apr.jpg;rif. 038.jpg;rif. 008.jpg;_0012.jpg;rif. 091.jpg;
    Come vedete al primo giro viene cancellata la parte di stringa corrispondente, ma poi più nulla. Avete qualche idea?

    Ciao e grazie.

    www.radiana.it - Spartiti musicali e Mp3

  2. #2
    una domanda, poichè la stringa ha come separatore ";" non potresti fare:

    codice:
    stringa_old="testo_da_fare_replace"
    
    elementi=split(stringa_old,";")
    dim new_stringa
    for each elemento in elementi
    
    for i=0 to ubound(delfoto)-1
    if delfoto(i)<>elemento then 
    new_stringa=new_stringa & elemento & ";"
    end if
    next
    
    next

  3. #3
    Non funziona. Mi spiego:
    codice:
    if delfoto(i)<>elemento then 
      new_stringa=new_stringa & elemento & ";"
    end if
    in questo modo si duplicano gli elementi: delfoto(0) è diverso dal primo elemento, allora aggiungo il primo elemento alla stringa. delfoto(1) è diverso dal primo elemento, allora aggiungo il primo elemento alla stringa. delfoto(2) è diverso dal primo elemento, allora aggiungo il primo elemento alla stringa...e così via per tutti gli elementi...

    Il replace dovrebbe essere rapido come metodo (tre righe in tutto). Solo non capisco perchè non funzioni...qualche idea?
    www.radiana.it - Spartiti musicali e Mp3

  4. #4
    a me in questo modo funzia:
    codice:
    dim testo, repl
    testo = "rif. 107.jpg;no apr.jpg;rif. 038.jpg;rif. 008.jpg;_0012.jpg;rif. 091.jpg;"
    repl  = array("rif. 107.jpg","rif. 008.jpg","rif. 091.jpg")
    
    function elimina(stringa, daEliminare)
    
    	if IsArray(daEliminare) then
    		dim i
    		for i=0 to UBound(daEliminare)
    			stringa = replace(stringa, trim(daEliminare(i) & "") & ";", "",1, -1, 1)
    		next 'i
    	end if
    	
    	elimina = stringa
    		
    end function
    
    Response.Write ("
    
    " & elimina(testo, repl))



    edit:
    una soluzione più carina potrebbe essere:
    codice:
    <%
    dim testo, repl
    testo = "rif. 107.jpg;no apr.jpg;rif. 038.jpg;rif. 008.jpg;_0012.jpg;rif. 091.jpg;"
    repl  = array("rif. 107.jpg","rif. 008.jpg","rif. 091.jpg")
    
    function elimina2(stringa, mioPattern)
    	
    	dim RegEx
    			
    	Set RegEx = New RegExp
    	RegEx.Global = True 
    	RegEx.IgnoreCase = True
    	     
    	RegEx.Pattern = mioPattern
    	stringa = RegEx.Replace(stringa,"")
    	    
    	Set RegEx = Nothing
    
    	elimina2=stringa
        
    End function
    
    dim i, tmpPattern
    tmpPattern=""
    
    if IsArray(repl) then
    	for i=0 to UBound(repl)
    		if i>0 then tmpPattern=tmpPattern & "|"
    		tmpPattern = tmpPattern & Trim(repl(i) & "") & ";"
    	next 'i
    end if
    
    Response.Write ("
    
    " & elimina2(testo, tmpPattern))
    %>
    questa può tornarti più comoda se per caso recuperi i nomi delle foto da eliminare con una request.form da una serie di checkbox. per creare il tmpPattern a quel punto ti basta fare una replace sul risultato della request.form della virgola con la pipeline evitando il ciclo. (ma questa è solo una supposizione)
    xxx

  5. #5
    Conoscendoti pensavo che mi avresti proposto una soluzione con mid instr etc.

    Adesso provo e ti faccio sapere.

    www.radiana.it - Spartiti musicali e Mp3

  6. #6
    sarebbe stata sicuramente più divertente da sviluppare
    xxx

  7. #7
    Ok, hai vinto. Mi ero dimenticato il "trim". Aggiunto quello tutto funziona. Ciao

    P.S.: ho notato che usi parentesi e virgolette nei response.write...qui c'è odore di un cambio di linguaggio...forse...ma non ci spero troppo...

    P.P.S: puoi togliere dal profilo quella minchiata sul girone degli innamorati!!!
    www.radiana.it - Spartiti musicali e Mp3

  8. #8
    Originariamente inviato da s_dimaio

    P.S.: ho notato che usi parentesi e virgolette nei response.write...qui c'è odore di un cambio di linguaggio...forse...ma non ci spero troppo...

    P.P.S: puoi togliere dal profilo quella minchiata sul girone degli innamorati!!!
    e fai male, uomo di poca fede

    xxx

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.