Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [VB2010] Gestire una stringa separata da caratteri standard in varie dichiarazioni.

    Salve a tutti. Atroce dilemma mi assilla.

    Su internet relativo alle stringhe non ho trovato un comando per fare ciò di cui ho bisogno.

    Ho una stringa testo composta da NOMELISTA-NUMEROLISTA-OPERATORE
    Avrei bisogno di poter assegnare questa unica stringa a 3 dichiarazioni differenti.

    ES.
    a=NOMELISTA
    b=NUMEROLISTA
    c=OPERATORE

    Il problema e che tutti e 3 le informazioni contenute nella stringa possono avere un numero di caratteri variabile, ma sono tutti separati dal segno " - ".
    Non potendo partire da destra con un numero di caratteri fisso, e nemmeno da sinistra, devo obbligatoriamente andare a cercare il carattere separatore e prendere tutto quello che c'è prima o dopo quel carattere. Non so quale comando usare, e oltretutto come faccio a definire che il campo centrale deve andare da a????

    Vi Prego Help me!!!!!

  2. #2

  3. #3
    Grazie per l'informazione, ho letto sul msdn la funzione split e credo sia appropriata. Però non riesco ad assegnare alle 3 variabili il valore splittato.

    Nel senso a tutte e 3 le variabili mi assegna sempre il primo valore splittato.
    Mi puoi scrivere il codice?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi usare un vettore di stringhe come risultato dello split

    Vedi gli esempi nella documentazione

    http://msdn.microsoft.com/it-it/libr...v=vs.110).aspx
    Ultima modifica di oregon; 01-02-2014 a 16:23
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Come anticipato l'msdn lo avevo già guardato.

    Il mio problema però resta.
    Cerco di spiegarmi meglio perché so che difficile come concetto da esprimere.

    ES. Torino-15-Operatore14

    Se lo spitto e lo assegno ad una variabile stringa lui mi assegna tutto.
    l'ho verificato con il msgbox(stringa1)

    Torino
    15
    Operatore 14

    Invece vorrei questo:

    Msgbox(stringa1)
    Torino

    Msgbox(stringa2)
    15

    Msgbox(Stringa3)
    Operatore 14

    Quindi in conclusione, io ho "stringa completa", devo assegnare lo split a "stringa1" "stringa2" stringa3".... Come scrivo il codice in VB?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da danidefox Visualizza il messaggio
    Come anticipato l'msdn lo avevo già guardato.

    Il mio problema però resta.
    Cerco di spiegarmi meglio perché so che difficile come concetto da esprimere.

    ES. Torino-15-Operatore14

    Se lo spitto e lo assegno ad una variabile stringa lui mi assegna tutto.
    l'ho verificato con il msgbox(stringa1)

    Torino
    15
    Operatore 14

    Invece vorrei questo:

    Msgbox(stringa1)
    Torino

    Msgbox(stringa2)
    15

    Msgbox(Stringa3)
    Operatore 14

    Quindi in conclusione, io ho "stringa completa", devo assegnare lo split a "stringa1" "stringa2" stringa3".... Come scrivo il codice in VB?
    Ma non hai visto che split separa la stringa e restituisce un array con gli elementi separati?
    Prova con
    codice:
    Dim separato() as String = Split(stringa,"-")
    MessageBox.Show(separato(0))
    MessageBox.Show(separato(1))
    Non ho provato il codice, ma, imperfezioni sintattiche a parte sono sicuro che funziona...

  7. #7
    Module Example
    Public Sub Main()
    Dim source As String = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]"
    Dim stringSeparators() As String = {"[stop]"}
    Dim result() As String

    ' Display the original string and delimiter string.
    Console.WriteLine("Splitting the string:{0} '{1}'.", vbCrLf, source)
    Console.WriteLine()
    Console.WriteLine("Using the delimiter string:{0} '{1}'.", _
    vbCrLf, stringSeparators(0))
    Console.WriteLine()

    ' Split a string delimited by another string and return all elements.
    result = source.Split(stringSeparators, StringSplitOptions.None)
    Console.WriteLine("Result including all elements ({0} elements):", _
    result.Length)
    Console.Write(" ")
    For Each s As String In result
    Console.Write("'{0}' ", IIf(String.IsNullOrEmpty(s), "<>", s))
    Next
    Console.WriteLine()
    Console.WriteLine()

    ' Split delimited by another string and return all non-empty elements.
    result = source.Split(stringSeparators, _
    StringSplitOptions.RemoveEmptyEntries)
    Console.WriteLine("Result including non-empty elements ({0} elements):", _
    result.Length)
    Console.Write(" ")
    For Each s As String In result
    Console.Write("'{0}' ", IIf(String.IsNullOrEmpty(s), "<>", s))
    Next
    Console.WriteLine()
    End Sub
    End Module
    ' The example displays the following output:
    ' Splitting the string:
    ' "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]".
    '
    ' Using the delimiter string:
    ' "[stop]"
    '
    ' Result including all elements (9 elements):
    ' '<>' 'ONE' '<>' 'TWO' '<>' '<>' 'THREE' '<>' '<>'
    '
    ' Result including non-empty elements (3 elements):
    ' 'ONE' 'TWO' 'THREE'
    Come potete vedere ho ricopiato pari pari l'esempio dell'msdn, nel quale mostra come assegnare alla variabile "result" il risultato come ho mostrato nel post precedente.

    Però come faccio ad assegnare il secondo ed il terzo valore a variabili dirrefenti da "result"?

    Inoltre mi si pone un altro problema, alla prima variabile come assegno solo il primo valore e non tutti incolonnati?

  8. #8
    Quote Originariamente inviata da renygade Visualizza il messaggio
    Ma non hai visto che split separa la stringa e restituisce un array con gli elementi separati?
    Prova con
    codice:
    Dim separato() as String = Split(stringa,"-")
    MessageBox.Show(separato(0))
    MessageBox.Show(separato(1))
    Non ho provato il codice, ma, imperfezioni sintattiche a parte sono sicuro che funziona...
    Grazie renygade. Quindi correggimi se sbaglio, se io scrivo così tutto dovrebbe andare?

    var1 = separato(0)
    var2 = separato(1)
    var3 = separato(2)

    E assegno ad ogni variabile il risultato corretto.....
    No non avevo visto che restituisse un array e mi rendo conto della mia distrazione. Provo subito. Grazie mille.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Guarda la mia risposta..
    E' un array.. Prendi i vari elementi con un indice..
    In ogni caso, credo sia meglio che tu cominci a studiare un po' le basi della programmazione, sennò ogni piccola difficoltà ti sembrerà insormontabile...

    EDIT: ho visto la tua risposta.
    Si, dovrebbe andare si.
    Tanto vale non usare altre variabili tipo var1, var2 o var3.. Se non altro assegna loro nomi più consoni. Altrimenti tanto vale scrivere "separatore(1), separatore(2)" ecc...

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.