Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: Split ogni 4 caratteri

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    52

    Split ogni 4 caratteri

    Buongiorno a tutti,
    ho un problema con lo split di una stringa.
    codice:
    Dim stringa, arr
    stringa = rs11("Codice")
    Response.write stringa
    Mi restituisce 000400060070. Vorrei che mi splittasse ogni 4 caratteri (il risultato di stringa è dinamico), mettendo i risultati in un array (arr(1)=0004 arr(2)=0006 ecc.)
    Il codice mi dà errore:
    codice:
    arr= Split(stringa,4) 
    Response.write arr(0) & " " & arr(1)
    Grazie in anticipo per l'aiuto
    Ciao

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    La split separa in base ad un carattere delimitatore. Se metti 4 lui si aspetta di trovare il 4 come carattere delimitatore...

    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    52
    Sì grazie della risposta, mi era venuto in mente infatti ho aggiunto un delimitatore * e così mi splitta la stringa correttamente.
    Scusa l'ulteriore domanda, ma mi si è posto un altro problema.
    Come fare con l'array dinamico? Infatti non so quanti risultati mi restituisce stringa e se per dire sono 2, non funziona perchè non riconosce arr(2),arr(3),arr(4)ecc...
    Grazie ancora ciao!
    codice:
    stringa = rs11("Codice_Casa")&"*"
    
    arr = Split(stringa, "*") 
    
    Splitted = arr(0) & " " & arr(1) & " " & arr(2) & " " & arr(3) & " " & arr(4) 
    
    Response.write Splitted

  4. #4
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    ciao a tutti,

    areli così come hai fatto ti crea un array da 2... in prima posizione tutta la tringa e in seconda una stringa vuota :master:
    se vuoi "splittare" ogni 4 caratteri potresti fare un ciclo nel quale usi la funzione Mid o Left... a me piacciono le regular expression e ti propongo una soluzione così
    codice:
    Set objRE = CreateObject("VBScript.RegExp")
    objRE.Pattern="(.{4})|(.{1,3}$)"
    objRE.Global=true
    stringa = "000400060070"
    set ris = objRE.Execute(stringa)
    dim arr()
    redim arr(ris.count-1)
    i=0
    for each x in ris
      arr(i)=x
      i=i+1
    next
    Sciauz

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Dobbiamo prima capire cosa vuoi fare.
    Dal tuo esempio sembra tu voglia sostituire * con lo spazio. Per far questo non ti serve la split né l'array... Basta una replace.
    Se il numero di elmentio dell'array è dinamico, lo devi scorrere con un ciclo for/next:
    codice:
    stringa = rs11("Codice_Casa")&"*"
    arr = Split(stringa, "*") 
    str_arr = ""
    for xx = 0 to UBound(arr)
    if str_arr = "" then
    str_arr = arr(x)
    else
    str_arr = str_arr &" "& arr(x)
    end if
    next
    
    Response.write str_arr
    Roby

  6. #6
    perche' tutti quei giri per ricostruire una stringa partendo da un array? c'e' la JOIN, mi sembra...

  7. #7
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Interessante la join, pensare che non l'ho mai usata...

    Roby

  8. #8
    Utente di HTML.it L'avatar di albis
    Registrato dal
    May 2002
    Messaggi
    912
    ho fatto una funzioncina per splittare una stringa in una array in base alla lunghezza

    codice:
    function RestArr(strValore,intLung,arrPassaggio)
    	dim intDimArray
    	intDimArray = Len(strValore) \  intLung
    	if (Len(strValore) mod  intLung)  > 0 then
    		intDimArray = intDimArray + 1
    	end if	
    	redim preserve arrPassaggio(intDimArray - 1)
    	
    	for i = 1 to (intDimArray * intLung) step intLung
    		arrPassaggio(i \ intLung) = Mid(strValore,i,intLung)
    		
    	next
    	
    end function
    
    dim strTesto
    dim arrRis()
    strTesto = "000hhhtttfffc"
    call RestArr(strTesto,3,arrRis)
    for i = 0 to UBound(arrRis)
    	Response.Write arrRis(i)	 & "|
    "
    		
    next
    Forza la magica ROMA

  9. #9
    confermo...e la sintassi è identica a quella della split, solo che gli passi l'array da unire e il carattere con cui va unito

    codice:
    join(array,"$") 'per esempio
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    52
    Grazie delle risposte,
    con il codice di Roby_72 ricevo il risultato corretto.
    mi spiego: la mia necessità è splittare quella stringa perchè poi una query in cui
    codice:
    strSQL6 = "SELECT * FROM Case where Disponibilita_da <= #"&x&"# and Disponibilita_a >= #"&y&"# AND Codice <> '"& Splitted &"'"
    Sono due giorni che mi scervello, ma niente.
    Ora ho pensato di splittare i codici e nella query dove c'è codice <> da devo inserire la variabile dinamica dell'array dei risultati.
    Il problema è che poi se l'array è vuoto mi va in errore...Mah...
    Ora ho messo
    codice:
    strSQL6 = "SELECT * FROM Case where Disponibilita_da <= #"&x&"# and Disponibilita_a >= #"&y&"# AND Codice <> '"& str_array &"'"
    e nella stampa a video ho
    codice:
     SELECT * FROM Case where Disponibilita_da <= #01/07/2004# and Disponibilita_a >= #20/07/2004# AND Codice <> '0070 '
    cioè logicamente mi fa la query solo su 0070 e non su 0006 e 0070.
    Mah......
    Grazie ancora

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.