Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 53
  1. #1
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400

    Splittare per ".." senza conoscere numero elementi stringa

    Ciao.

    non so come risolvere questo problema:

    devo splittare questa stringa per "..":

    codice:
    .Mem C..For A..Gia A..Cir G.
    per ottenere questo risultato:

    codice:
    .Mem C
    For A
    Gia A
    Cir G.
    Il problema che non conosco a priori quanti sono gli elementi che possono comporre la stringa e quindi il numero finale, per cui mi va in errore.

    Come posso risolvere?
    Grazie

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ti va in errore che cosa?
    La Split produce un array composto dagli elementi che ha trovato (il numero di .. più uno).

    Roby

  3. #3
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Originariamente inviato da Roby_72
    Ti va in errore che cosa?
    La Split produce un array composto dagli elementi che ha trovato (il numero di .. più uno).

    Roby
    Grazie per aver risposto.

    Mi sembra d'aver capito e questa è una situazione tipica:

    codice:
    <%
    
    stringa=".Mem C"
    arr = Split(stringa,"..")
    Response.Write "arr=Split(""" & stringa & ""","", "")
    "
    Response.Write "LBound(arr)=" & LBound(arr) & "
    "
    Response.Write "UBound(arr)=" & UBound(arr) & "
    "
    Response.Write "Elementi dell'array=" & (UBound(arr)-LBound(arr)+1) & "<hr>"
    
    stringa=".Mem C..For A"
    arr = Split(stringa,"..")
    Response.Write "arr=Split(""" & stringa & ""","", "")
    "
    Response.Write "LBound(arr)=" & LBound(arr) & "
    "
    Response.Write "UBound(arr)=" & UBound(arr) & "
    "
    Response.Write "Elementi dell'array=" & (UBound(arr)-LBound(arr)+1) & "<hr>"
    
    stringa=".Mem C..For A..Gia A"
    arr = Split(stringa,"..")
    Response.Write "arr=Split(""" & stringa & ""","", "")
    "
    Response.Write "LBound(arr)=" & LBound(arr) & "
    "
    Response.Write "UBound(arr)=" & UBound(arr) & "
    "
    Response.Write "Elementi dell'array=" & (UBound(arr)-LBound(arr)+1) & "<hr>"
    
    stringa=".Mem C..For A..Gia A..Cir G."
    arr = Split(stringa,"..")
    Response.Write "arr=Split(""" & stringa & ""","", "")
    "
    Response.Write "LBound(arr)=" & LBound(arr) & "
    "
    Response.Write "UBound(arr)=" & UBound(arr) & "
    "
    Response.Write "Elementi dell'array=" & (UBound(arr)-LBound(arr)+1) & "<hr>"
    
    %>
    Adesso dovrei prendere tutte queste stringhe contenute in una tabella con una query ed inserirle in una select... come devo procedere?

    Tabella:
    codice:
    id	frase
    1	.Mem C
    2	.Mem C..For A
    3	.Mem C..For A..Gia A
    4	.Mem C..For A..Gia A..Cir G.
    Output nella select:
    codice:
    .Mem C
    For A
    Gia A
    Cir G.

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non ho capito perché fai questo...
    Così non ti basta?
    codice:
    str = ".Mem C..For A..Gia A..Cir G."
    arr = split(str,"..")
    if IsArray(arr) then
    for xE = 0 to Ubound(arr)
    response.write arr(xE)&"
    "
    next
    end if
    Roby

  5. #5
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Originariamente inviato da Roby_72
    Non ho capito perché fai questo...
    Così non ti basta?
    codice:
    str = ".Mem C..For A..Gia A..Cir G."
    arr = split(str,"..")
    if IsArray(arr) then
    for xE = 0 to Ubound(arr)
    response.write arr(xE)&"
    "
    next
    end if
    Roby
    Ok grazie, ho scritto così:

    codice:
    Set objconn = Server.CreateObject("ADODB.Connection")
    objconn.Open "DRIVER={MySQL ODBC 5.1 Driver};SERVER=....;"
    
    SQL = " SELECT * FROM _newTable1 "  
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open SQL, objconn
    
    if Not objRS.eof then
       while not objRS.eof 
    
            str = objRS("frase")
            arr = split(str,"..")
    
             if IsArray(arr) then
                for xE = 0 to Ubound(arr)
                   response.write arr(xE)&"
    "
                next
             end if
    
          objRS.movenext()
       wend
    end if
    
    objRS.Close()
    Set objRS = Nothing
    
    objConn.Close()
    Set objConn = Nothing
    Ed ottengo questa lista:

    codice:
    .Mem C
    .Mem C
    For A
    .Mem C
    For A
    Gia A
    .Mem C
    For A
    Gia A
    Cir G.
    Posso eliminare i doppioni nella lista?

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Crea una nuova stringa nel ciclo alla quale aggiungerai solo gli elementi che non siano già presenti.

    Roby

  7. #7
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Originariamente inviato da Roby_72
    Crea una nuova stringa nel ciclo alla quale aggiungerai solo gli elementi che non siano già presenti.

    Roby
    Scusa non ho capito...

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Puoi creare una tabella temporanea, un array temporaneo o una nuova stringa senza doppioni.
    Scegli tu quello che preferisci. Man mano che scorri l'array principale devi verificare che ogni singolo elemento non sia già presente (in tabella, nell'array nuovo o in una nuova stringa) e quindi lo inserisci.
    Immagina di avere due contenitore: uno con i doppioni ed uno vuoto.
    Man mano che estrai dal primo inserisci nel secondo solo se quello che hai estratto non sia già presente.


    Roby

  9. #9
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Originariamente inviato da Roby_72
    Puoi creare una tabella temporanea, un array temporaneo o una nuova stringa senza doppioni.
    Scegli tu quello che preferisci. Man mano che scorri l'array principale devi verificare che ogni singolo elemento non sia già presente (in tabella, nell'array nuovo o in una nuova stringa) e quindi lo inserisci.
    Immagina di avere due contenitore: uno con i doppioni ed uno vuoto.
    Man mano che estrai dal primo inserisci nel secondo solo se quello che hai estratto non sia già presente.


    Roby
    Ci provo, ma senza risultato:

    codice:
             str = objRS("frase")
             arr = split(str,"..")
    
                if IsArray(arr) then            
                   for xE = 0 to Ubound(arr) 
                      for j = 1 to ubound(arr)
                         if arr(xE) > arr(j) then
                            temp = arr(xE)
                            arr(xE) = arr(j) 
                            arr(j) = temp
                               response.write arr(j) & "
    "
                         end if
                      next                           
                   next
                end if
    L'output è questo:
    codice:
    Gia A
    For A
    Gia A
    For A


  10. #10
    Utente di HTML.it L'avatar di wegawhite
    Registrato dal
    Aug 2004
    Messaggi
    1,400
    Fatto !!!!

    codice:
    <%
    
    Set myDict = Server.CreateObject("Scripting.Dictionary")
    
    Set objconn = Server.CreateObject("ADODB.Connection")
    objconn.Open "DRIVER={MySQL ODBC 5.1 Driver};SERVER=...;"
    
    SQL = " SELECT * FROM _newTable1 "  
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.Open SQL, objconn
    
       if Not objRS.eof then
          while not objRS.eof 
    
             str = objRS("frase")
             myArray = split(str,"..")
    
             for index = 0 to UBound(myArray)
                if ( not myDict.Exists(myArray(index)) ) then
                   myDict.Add myArray(index), myArray(index)
                      Response.Write myDict(myArray(index)) & "
    "
                end if
             next
    
             objRS.movenext()
          wend
       end if
    
    objRS.Close()
    Set objRS = Nothing
    
    objConn.Close()
    Set objConn = Nothing
    
    Set myDict = Nothing
    
    %>
    Output:

    codice:
    .Mem C
    For A
    Gia A
    Cir G.
    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.