 
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à...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.