Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente bannato
    Registrato dal
    Oct 2003
    Messaggi
    372

    funzione ricorsiva... perch non funziona?

    salve, sto cercando di passare ad asp.net.
    mi sono imbattuto nella conversione di una funzione da asp classico asd asp.net. in asp calssico funziona. la funzione serve per eliminare i "//" ad esempio una stringa del tipo "///img//my_file.txt" deve diventare "/img/my_file.txt"

    ed è questa.
    codice:
    function pulisci(stringa)
    		dim outp
    		outp=stringa
    		
    		if instr(outp,"//")>0 then
    			outp=replace(stringa,"//","/")
    			pulisci = pulisci(outp)
    		else
    			pulisci = outp
    		end if
    		
    end function
    la corrispettiva in asp.net credevo fosse questa
    codice:
    	
    function pulisci(stringa as string)
    		dim outp as string=stringa
    		
    		if outp.indexOf("//") > 0 then
    			outp=stringa.replace("//","/")	
    			return pulisci(outp)			
    		else
    			return outp
    		end if
    		
    end function

    ma invece in asp.net non funziona. cioè mi restituisce sempre la stringa iniziale, ovvero "///img//my_file.txt"

    sapreste spiegarmi l'errore?

    grazie a tutti

  2. #2
    Invece di
    if outp.indexOf("//") > 0 then
    Prova ad utilizzare
    If outp.LastIndexOf("//") > 0 Then

    Questo perchè se la istringa inizia con // esce subito al primo giro dato che l'index di // è 0

    Fammi sapere
    Ciao
    Kalman
    Kalman

  3. #3
    indexof ritorna -1 se non sono state trovate corrispondenze, 0 se la corrispondenza è al primo carattere. Trovandoti appunto la corrispondenza al primo carattero (indexof=0) usciva subito dal ciclo.
    codice:
    function pulisci(stringa as string)
    		dim outp as string=stringa
    		
    		if outp.indexOf("//") > -1 then
    			outp=stringa.replace("//","/")	
    			return pulisci(outp)			
    		else
    			return outp
    		end if
    		
    end function
    comunque la stessa cosa puoi farla senza funzione ricorsiva, se ricordo la sintassi vb, più o meno cosi;
    codice:
    function pulisci(stringa as string)
       dim outp as string=stringa
       while outp.indexOf("//") > -1
          outp=stringa.replace("//","/")
       loop
       return outp;
    end function

  4. #4
    Utente bannato
    Registrato dal
    Oct 2003
    Messaggi
    372
    WOOW!


    dim x as integer=1

    do while x>0
    grazie()
    loop


    (cioè grazie infinite)

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.