PDA

View Full Version : [vb.net] Eliminazione Multipla file di testo


mangzeus
30-01-2007, 09:58
Ho 2 file di testo, in uno ci sono dei numeri in combinazione e nell'altro pure. Ho bisogno di metterli a confronto per poer eliminare dal foglio 1 le righe scritte nel folgio 2.


foglio 1:

1 2 3 4 5 6
2 3 4 5 6 7
3 4 5 6 7 8
3 4 5 6 7 8


foglio 2:

1 3 4 5 6 7
4 5 6 7 8 9
3 4 5 6 7 8
1 2 3 4 5 6
2 3 4 5 6 7


devo mettere a confronto il foglio 1 con il 2 e le righe del foglio 1 che sono presenti nel foglio 2 devono essere eliminate.

come faccio???c'è un metodo per metterle a confronto tutte assieme o devo scorrermi riga per riga...mi potreste consigliare...grazie...

mangzeus
07-02-2007, 21:54
ho fatto il tutto con un array...solo che ovviamente devo passarmi riga per riga...ecco come ho fatto...

il mio problema alla fine è quello di ordinare in modo crescente i valori all'interno di una stringa nel minor tempo possibile....

esempio:

str= "10 5 4 7 2"

devo ottenere

str="2 4 5 7 10"

io ho fatto in questo modo ma cercavo un modo più veloce, sperando che esista....

io ho fatto così:


Dim j As Integer
Dim a As String, c As String
Dim b
Dim arrayl As New ArrayList
arrayl.Clear()
''trasformo la stringa in un array
a = str

''se a =nothing esci dalla funzione che non serve
If a = Nothing Then
Exit Function
End If

b = Split(a, " ")

''faccio il ciclo per iserire all'interno di un array list i valori
For j = 0 To UBound(b)
' 'converto in numero il contenuto dell'array così mi mette in ordine crescente i numeri, tutti i numeri.
arrayl.Add(CInt(b(j)))
Next

''li ordino
arrayl.Sort()

b = arrayl
For j = 0 To arrayl.Count - 1
c = LTrim(c & " " & arrayl.Item(j))

Next

ritstrord = c


qualcuno potrebbe dirmi se c'è un modo più veloce per fare l'operazione di mettere in ordine numerico crescente una stringa????

Crashbandy80
08-02-2007, 11:11
Sicuramente ci sono metodi più eleganti di come l'ho buttato giu io, ma dovrebbe funzionare:

Dim sortedString As String = ""
Dim testString As String = "10 5 8 12 4 65 1"
Dim strArr As String() = Strings.Split(testString, " ")

Dim tempAL As New ArrayList

For Each _str As String In strArr
tempAL.Add(CInt(_str))
Next

tempAL.Sort()

For Each obj As Integer In tempAL
sortedString &= obj & " "
Next

'Rimuovo l'ultimo spazio
sortedString = Left(sortedString, sortedString.Length - 1)

mangzeus
08-02-2007, 12:13
Sicuramente ci sono metodi più eleganti di come l'ho buttato giu io, ma dovrebbe funzionare:

Dim sortedString As String = ""
Dim testString As String = "10 5 8 12 4 65 1"
Dim strArr As String() = Strings.Split(testString, " ")

Dim tempAL As New ArrayList

For Each _str As String In strArr
tempAL.Add(CInt(_str))
Next

tempAL.Sort()

For Each obj As Integer In tempAL
sortedString &= obj & " "
Next

'Rimuovo l'ultimo spazio
sortedString = Left(sortedString, sortedString.Length - 1)



a me serve velocità...meno passaggi possibili...di sicuro il tuo è più elegante del mio....cmq grazie mille...


se avete altri consigli...

mangzeus
08-02-2007, 12:15
anzi, riprendendo la domanda del mio priomo post...c'è il modo di cancellare le righe singole o multiple da un file di testo con gli oggetti StreamReader e StreamWriter???

così non avrei più problemi di velocità...