Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di garlick
    Registrato dal
    Dec 2001
    Messaggi
    385

    [vb]Suddividere una stringa secondo un carattere

    Salve a tutti, poniamo che io abbia una stringa tipo
    strVar = "nome1,nome2,nome3" ; come notate, tutti gli elementi sono separati da una virgola. Che funzione devo utilizzare per ottenere un'array avente per elementi il testo compreso tra una virgloa e l'altra? In pratica vorrei che la stringa venisse divisa in altre stringhe utilizzando la virgola come delimitatore.

    Grazie, anche se non so se sono stato chiaro
    :tongue:

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    Split


    Per come si usa se hai bisogno c'è l'help (ma basta il tooltip di vb).
    Ans.

  3. #3
    Utente di HTML.it L'avatar di garlick
    Registrato dal
    Dec 2001
    Messaggi
    385
    Ma la funzione Split esiste anche in vb5 ? io pensavo di no

  4. #4

  5. #5
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    se fai una ricerca di ciò che ti può essere utile........
    dim stringa as string
    dim myarray$(3)
    stringa=""nome1,nome2,nome3""
    a=len(stringa)
    n=0
    bx$="":for i=1 to a
    n=n+1
    if mid(stringa,i,1)="," then
    myarray$(n)=bx$
    bx$=""
    else
    bx$=bx$+mid(stringa,i,1)
    end if
    next i

    for i=1 to 3
    if myarray$(i)=myarray$(i) then stop
    'metti il puntatore del mouse su myarray$ e controllane il valore
    next i

  6. #6
    Utente di HTML.it L'avatar di garlick
    Registrato dal
    Dec 2001
    Messaggi
    385
    Grazie steno, provo così e poi ti dico se sono riuscito. Ciao Up

  7. #7
    Utente di HTML.it L'avatar di garlick
    Registrato dal
    Dec 2001
    Messaggi
    385


    Mi da errore a questa riga:

    myarray$(n) = bx$

    dicendomi che l'indice non è compreso nell'intervallo.
    MA questo codice funziona anche se non si conosce il numero degli elementi separati dalla virgola?

  8. #8
    Sì, quando dichiari l'array devi specificarne la dimensione, questo causa errori qualora il numero di elementi della stringa sia superiore alla dimensione specificata.
    Potresti usare il comando ReDim per ridimensionare il vettore (array).
    Questo però prevede che tu sappia già proma quanti saranno gli elemeti della stringa (per intenderci devi prima contarli).
    Per evitare tutto ciò potresti usare un oggetto collection.
    Ecco una funzione che ho scrittto che divide una stringa con un separatore e ne inserisce gli elementi in una collection.

    codice:
    Public Function f_Lista(lista As String, Optional Separatore As String) As Collection
        Dim pos As Integer
        Dim ipos As Integer
        Dim lung As Integer
        Dim campo As String
        Set f_Lista = Nothing
        Set f_Lista = New Collection
        If Separatore = "" Then Separatore = ","
        pos = 0
        ipos = 1
        Do
           pos = InStr(pos + 1, lista, Separatore, vbTextCompare)
           If pos = 0 Then
              lung = (Len(lista) - ipos) + 1
            Else
              lung = pos - ipos
           End If
           campo = Mid(lista, ipos, lung)
           f_Lista.Add campo
           ipos = pos + 1
        Loop Until pos = 0
    End Function
    Spero di essere stato d'aiuto, fammi sapere!!
    CIAO
    lupusinfabula

    Programmatore VB, ASP, Delphi.

  9. #9
    Utente bannato
    Registrato dal
    Apr 2002
    Messaggi
    546
    scusami ma lo scritto senza testarlo.......
    n=n+1 lo devi mettere come sotto e non prima

    if mid(stringa,i,1)="," then
    n=n+1

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    53

    Re:[vb]Suddividere una stringa secondo un carattere

    Ciao.
    Dunque, non esiste una funzione specifica per il tuo problema, ma
    puoi creare tu una Sub o una Function che faccia al caso tuo.

    Prova con questo esempio:
    Crea un progetto con:

    Form1, Text1, List1, Command1

    Copia il codice seguente ed esegui.

    ------------------------------------------------------------
    Sub DividiStringa()
    On Error Resume Next
    Dim Stringa As String '\\ La stringa che vuoi dividere
    Dim Parola(100) As String '\\ L'Array X le parole
    Dim MyChar As String '\\ Per la scansione dei caratteri
    Dim tmpString As String '\\ Stringa temporanea
    Dim i As Integer '\\ Contatore

    Stringa = CStr(Text1.Text) '\\ Qui ci metti quello che vuoi

    For i = 0 To Len(Stringa)
    MyChar = Mid(Stringa, i, 1)
    If MyChar = "," Then
    MyChar = ""
    Parola(i) = Trim(tmpString)
    List1.AddItem Parola(i)
    tmpString = ""
    End If

    If i = Len(Stringa) Then
    tmpString = tmpString & MyChar
    Parola(i) = Trim(tmpString)
    List1.AddItem Parola(i)
    End If

    tmpString = tmpString & MyChar
    Next i

    End Sub

    Private Sub Command1_Click()
    Call DividiStringa
    End Sub
    ------------------------------------------------------------
    Spero faccia al caso tuo.
    Fammi sapere se ti sono stato utile!!
    Bye.
    Janx

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.