Differenze tra le versioni di "Eliminare più elementi da un array"
Da Gambas-it.org - Wikipedia.
(3 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
Per eliminare più elementi da un vettore, ad esempio sulla base dei valori in ciascuno di essi contenuti, si utilizzarà un ciclo con il Metodo ".Remove()" dell'oggetto vettore, avendo cura nel codice della ovvia riduzione della quantità ''corrente'' degli elementi nell'array, al fine di non incorrere in un errore di "''Out of Bounds'' ". | Per eliminare più elementi da un vettore, ad esempio sulla base dei valori in ciascuno di essi contenuti, si utilizzarà un ciclo con il Metodo ".Remove()" dell'oggetto vettore, avendo cura nel codice della ovvia riduzione della quantità ''corrente'' degli elementi nell'array, al fine di non incorrere in un errore di "''Out of Bounds'' ". | ||
− | + | ====Esempi su valori numerici==== | |
Mostriamo un esempio pratico, nel quale saranno eliminati solo gli elementi contenenti numeri dispari: | Mostriamo un esempio pratico, nel quale saranno eliminati solo gli elementi contenenti numeri dispari: | ||
Public Sub Main() | Public Sub Main() | ||
Dim numeri As Byte[] = [1, 7, 2, 34, 8, 7, 2, 5, 14, 22, 92, 48, 76, 15, 7, 1, 3] | Dim numeri As Byte[] = [1, 7, 2, 34, 8, 7, 2, 5, 14, 22, 92, 48, 76, 15, 7, 1, 3] | ||
− | Dim | + | Dim i As Integer |
− | + | While i < bb.Count | |
− | + | If Not Even(numeri[i]) Then | |
− | For Each b In numeri | + | numeri.Remove(i) |
+ | Else | ||
+ | Inc i | ||
+ | Endif | ||
+ | Wend | ||
+ | |||
+ | <FONT Color=gray>' ''Mostra quanto ottenuto dal ciclo precedente:''</font> | ||
+ | For Each b As Byte In numeri | ||
Print b | Print b | ||
Next | Next | ||
End | End | ||
− | + | In quest'altro esempio, invece, si desidera eliminare gli elementi con valore "zero": | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Public Sub Main() | Public Sub Main() | ||
Riga 40: | Riga 32: | ||
While i < bb.Count | While i < bb.Count | ||
− | If bb[i] == 0 Then | + | If bb[i] == 0 Then bb.Remove(i) |
− | |||
− | |||
− | |||
Inc i | Inc i | ||
Wend | Wend | ||
− | + | ||
+ | <FONT Color=gray>' ''Mostra quanto ottenuto dal ciclo precedente:''</font> | ||
For Each b In bb | For Each b In bb | ||
Print b | Print b | ||
Riga 52: | Riga 42: | ||
End | End | ||
− | Similmente per eliminare degli elementi ''vuoti'' in un array di | + | |
+ | ====Esempi sulle stringhe di caratteri==== | ||
+ | Similmente per eliminare degli elementi ''vuoti'' in un array di tipo String[]: | ||
+ | Public Sub Main() | ||
+ | |||
+ | Dim ss As String[] = ["Aaaaa", Null, "Bbbbb", "", "Ccccc", Null, "Ddddd", "Eeeee", "Fffff", ""] | ||
+ | |||
+ | For i As Integer = ss.Max DownTo 0 | ||
+ | If ss[i] = Null Then ss.Remove(i) | ||
+ | Next | ||
+ | |||
+ | <FONT Color=gray>' ''Mostra quanto ottenuto dal ciclo precedente:''</font> | ||
+ | For Each s As String In ss | ||
+ | Print s | ||
+ | Next | ||
+ | |||
+ | End | ||
+ | o così: | ||
Public Sub Main() | Public Sub Main() | ||
Riga 59: | Riga 66: | ||
While i < ss.Count | While i < ss.Count | ||
− | If ss[i] == Null Then | + | If ss[i] == Null Then ss.Remove(i) |
− | |||
− | |||
− | |||
Inc i | Inc i | ||
Wend | Wend | ||
Riga 71: | Riga 75: | ||
Next | Next | ||
+ | End | ||
+ | o anche usando la funzione "Split()" e il Metodo ".Join()" dell'array di tipo ''String'': | ||
+ | Public Sub Main() | ||
+ | |||
+ | Dim ss As String[] = ["Aaaaa", Null, "Bbbbb", "", "Ccccc", Null, "Ddddd", "Eeeee", "Fffff", ""] | ||
+ | |||
+ | ss = Split(ss.Join(","), ",", "", True) | ||
+ | |||
+ | <FONT Color=gray>' ''Mostra quanto ottenuto dalla riga precedente:''</font> | ||
+ | For Each s As String In ss | ||
+ | Print s | ||
+ | Next | ||
+ | |||
End | End |
Versione attuale delle 07:05, 23 giu 2024
Per eliminare più elementi da un vettore, ad esempio sulla base dei valori in ciascuno di essi contenuti, si utilizzarà un ciclo con il Metodo ".Remove()" dell'oggetto vettore, avendo cura nel codice della ovvia riduzione della quantità corrente degli elementi nell'array, al fine di non incorrere in un errore di "Out of Bounds ".
Esempi su valori numerici
Mostriamo un esempio pratico, nel quale saranno eliminati solo gli elementi contenenti numeri dispari:
Public Sub Main() Dim numeri As Byte[] = [1, 7, 2, 34, 8, 7, 2, 5, 14, 22, 92, 48, 76, 15, 7, 1, 3] Dim i As Integer While i < bb.Count If Not Even(numeri[i]) Then numeri.Remove(i) Else Inc i Endif Wend ' Mostra quanto ottenuto dal ciclo precedente: For Each b As Byte In numeri Print b Next End
In quest'altro esempio, invece, si desidera eliminare gli elementi con valore "zero":
Public Sub Main() Dim bb As Byte[] Dim b As Byte Dim i As Integer bb = [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 9, 0] While i < bb.Count If bb[i] == 0 Then bb.Remove(i) Inc i Wend ' Mostra quanto ottenuto dal ciclo precedente: For Each b In bb Print b Next End
Esempi sulle stringhe di caratteri
Similmente per eliminare degli elementi vuoti in un array di tipo String[]:
Public Sub Main() Dim ss As String[] = ["Aaaaa", Null, "Bbbbb", "", "Ccccc", Null, "Ddddd", "Eeeee", "Fffff", ""] For i As Integer = ss.Max DownTo 0 If ss[i] = Null Then ss.Remove(i) Next ' Mostra quanto ottenuto dal ciclo precedente: For Each s As String In ss Print s Next End
o così:
Public Sub Main() Dim ss As String[] = ["Aaaaa", Null, "Bbbbb", "", "Ccccc", Null, "Ddddd", "Eeeee", "Fffff", ""] Dim i As Integer While i < ss.Count If ss[i] == Null Then ss.Remove(i) Inc i Wend ' Mostra quanto ottenuto dal ciclo precedente: For Each s As String In ss Print s Next End
o anche usando la funzione "Split()" e il Metodo ".Join()" dell'array di tipo String:
Public Sub Main() Dim ss As String[] = ["Aaaaa", Null, "Bbbbb", "", "Ccccc", Null, "Ddddd", "Eeeee", "Fffff", ""] ss = Split(ss.Join(","), ",", "", True) ' Mostra quanto ottenuto dalla riga precedente: For Each s As String In ss Print s Next End